1

我有一段时间没有写 C++,所以我有点生疏了。如果我有这样的课程:

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 吗?

4

2 回答 2

1

您可以将 JsonObject 对象添加到地图中,但类型与初始化不匹配。

编辑:您必须将其初始化为:

this->objects = new map<string, JsonType>();

但是,如果您有任何一个对象:

JsonType js = new JsonType();

或者

JsonObject js2 = new JsonObject();

或者

JsonType js3 = new JsonObject();

您可以将这些对象中的任何一个添加到如上所述初始化的地图中。

于 2012-07-25T02:25:19.537 回答
1

objects不使用JsonObjectvalue_type,它使用JsonTypes。

换句话说,您分配了错误的类型map来存储到objects.

于 2012-07-25T02:27:25.897 回答