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は を使用せず、 を使用JsonObjectします。value_typeJsonType

つまり、間違った種類のmapを に格納するように割り当てていますobjects

于 2012-07-25T02:27:25.897 に答える