我尝试将指针作为考试问题的一部分来实现类似于JSON
的功能,但最终出现了一个我不知道如何解决的错误。
我有这些类(省去了实现,因为我认为这对我的错误不重要):
struct JSON_BaseObject;
template<typename J_Type>
struct JSON_Value : public JSON_BaseObject;
struct JSON_String : public JSON_Value<std::string>;
struct JSON_Number : public JSON_Value<double>;
struct JSON_Null : public JSON_BaseObject;
using JSON_Children = std::map<std::string, JSON_BaseObject*>;
using JSON_Object = JSON_Value<JSON_Children>;
[我想将JSON_BaseObject*
中类型为JSON_Object
的子代用作函数,这些函数对于这些派生类型具有不同的重载,因此我制作了这些函数,并希望它们将JSON_BaseObject*
解析为相应的类(指针):
void print(JSON_Null*, std::ostream& os);
void print(JSON_String* str, std::ostream& os);
void print(JSON_Number* number, std::ostream& os);
void print(JSON_Object* object, std::ostream& os);
[当我运行它时,我遇到一个运行时错误,该程序无法找到函数print(JSON_BaseObject*, std::ostream&)
,并且我意识到我不如我以前想象的那样擅长c ++。
是否可以像这样以某种方式从基类解析指针类型参数?
我如何使其变得更好,例如不知道print(obj, os);
的派生类就可以开始使用obj
?
我尝试将类似于JSON的内容作为指针作为考试问题的一部分,但最终出现了一个我不知道如何解决的错误。我有这些课程(省去了...