データが派生クラスへのポインタであるマップへの参照を渡すことができるのだろうか?データが派生クラスへのポインタであるマップへの参照を渡すことはできますか?
q.cc: q.cc:34:エラー:タイプの参照の無効初期設定から '&をmapB_t' INTメイン() '関数で
#include <map>
class B {
public:
private:
int x_;
};
class D : public B {
public:
private:
int y_;
};
typedef std::map<int, B*> mapB_t;
typedef std::map<int, D*> mapD_t;
void foo(mapB_t& inmap) {
;
}
int main() {
mapB_t mapB;
mapD_t mapD;
mapB[0] = new B;
mapD[0] = new D;
foo(mapB);
foo(mapD);
return 0;
}
私はこのコンパイラエラーを表示しますタイプの式「mapD_t」 q.cc:22:エラー:
コンパイラエラーは、あなたがこれを行うことはできません良い指標です。 – juanchopanza
多形性が 'D'型オブジェクトを' B& '型参照に渡すことを許しても、' mapB_t'と 'mapD_t'は継承関係を持たないという説明があるはずです。したがって、 'mapB_t&'は 'mapD_t'を受け付けません。 –
起こりうることを考えてみましょう。 'inmap [0] = new B;'は災害になります。 – molbdnilo