我有一段时间没有写过C ++,所以我有点生疏了。如果我有这样的课程:
class JsonType{
protected:
map<string, JsonType>* objects;
}
和一个继承自:
的类class JsonObject : public JsonType{
public:
JsonObject(){
this->objects = new map<string, JsonObject>();
}
}
为什么我会收到编译器错误cannot convert...JsonObject...to...JsonType
?这不应该是合法的,因为JsonObject是JsonType吗?
答案 0 :(得分:1)
您可以将JsonObject对象添加到地图中,但这些类型与初始化不匹配。
编辑:您必须将其初始化为:
this->objects = new map<string, JsonType>();
但是如果你有任何一个对象:
JsonType js = new JsonType();
或
JsonObject js2 = new JsonObject();
或
JsonType js3 = new JsonObject();
您可以将任何这些对象添加到上面初始化的地图中。
答案 1 :(得分:1)
objects
不会将JsonObject
用于其value_type
,而是使用JsonType
。
换句话说,您正在分配错误类型的map
以存储到objects
。