好久没写C++了,有点生疏了。如果我有这样的类(class):
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 吗?
最佳答案
您可以将 JsonObject 对象添加到映射中,但类型不匹配无法初始化。
编辑:您必须将其初始化为:
this->objects = new map<string, JsonType>();
但是如果你有任何一个对象:
JsonType js = new JsonType();
或
JsonObject js2 = new JsonObject();
或
JsonType js3 = new JsonObject();
您可以将这些对象中的任何一个添加到如上初始化的 map 中。
关于c++ - C++中的模板参数继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11641804/