我已经有一段时间没有写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/

10-10 06:31