2016-03-21 26 views
0

は誰も私を説明することができ、私のクラスでは動作しません。ただし、これはできません:ベクトルは、私が間違って何をやっている

mdata.push_back(*Mbuff); //this doesn't work... I can't print data from mdata 

どうしてですか?

+0

[so]へようこそ!これはどんな言語ですか?私はC++タグを追加するつもりですが、私はちょうど推測しています。 – jpaugh

+2

作成しましたか?** MClassのためのコンストラクター**をコピーしましたか?データが 'vector'によって作成されている' MClass'の内部インスタンスにコピーされていないと思います。 boost :: ptr_vector mDataのようなboostの 'ptr_vector'を使う方が良いかもしれません。コピーコンストラクタとクリーンアップについて心配する必要はありません。 'mData.push_back(new MClass2);' – Sam

+0

Lookupの "object slicing"のようにデータを追加することができます。 –

答えて

1

MClass2から実際MClass継承、あなたがMClass : public MClass2 {}を書き込むことによって示唆するように見えるように、あなたはMClassオブジェクトとしてMClass2オブジェクトを扱うことはできませんが、他の方法で回避する場合。

(あなたはClass Dog : public Animalを持っている場合は同様に、あなたは動物としての犬を扱うことができますが、犬などの動物を扱うことができません。)

ので、*MbuffMClass2オブジェクトであるため、あなたがそれを置くことはできませんMClassオブジェクトのベクトルです。

しかし、あなたは「これはうまくいかない」ということをより具体的に説明する必要があります。

関連する問題