Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C+中的模板参数继承+; 我暂时还没有写C++,所以我有点生疏了。如果我有这样一门课: class JsonType{ protected: map<string, JsonType>* objects; } 类JsonType{ 受保护的: 地图*对象; }_C++_Templates_Inheritance_Polymorphism - Fatal编程技术网

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();