我已经有一段时间没有写C++了,所以我有点使用rust 。如果我有这样的类(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对象添加到 map ,但类型与初始化不匹配。
编辑:您必须将其初始化为:
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/