C+中的模板参数继承+; 我暂时还没有写C++,所以我有点生疏了。如果我有这样一门课: class JsonType{ protected: map<string, JsonType>* objects; } 类JsonType{ 受保护的: 地图*对象; }
以及继承自该类的类:C+中的模板参数继承+; 我暂时还没有写C++,所以我有点生疏了。如果我有这样一门课: class JsonType{ protected: map<string, JsonType>* objects; } 类JsonType{ 受保护的: 地图*对象; },c++,templates,inheritance,polymorphism,C++,Templates,Inheritance,Polymorphism,以及继承自该类的类: class JsonObject : public JsonType{ public: JsonObject(){ this->objects = new map<string, JsonObject>(); } } classjsonobject:publicjsontype{ 公众: JsonObject(){ 此->对象=新映射(); } } 为什么会出现编译器错误无法将…JsonO
class JsonObject : public JsonType{
public:
JsonObject(){
this->objects = new map<string, JsonObject>();
}
}
classjsonobject:publicjsontype{
公众:
JsonObject(){
此->对象=新映射();
}
}
为什么会出现编译器错误
无法将…JsonObject…转换为…JsonType
?这难道不应该是合法的吗,因为JsonObject是JsonType?您可以将JsonObject对象添加到映射中,但类型与初始化不匹配
编辑:必须将其初始化为:
this->objects = new map<string, JsonType>();
或
或
您可以将这些对象中的任何一个添加到如上初始化的映射。
对象
不使用JsonObject
作为其值类型
,而是使用JsonType
s
换句话说,您分配了错误类型的
映射
以存储到对象
将A
转换为B
与将X
转换为X
非常不同
JsonType js = new JsonType();
JsonObject js2 = new JsonObject();
JsonType js3 = new JsonObject();