継承され認識されません。私は2つのクラスがあります。これは、entType
を除いて、コピーコンストラクタ内のすべての変数で発生します。 私がしようとしているのは、同じSDL_Surfaceを使ってentity
のベクトルを持つことです。したがって、同じentType
のすべてのオブジェクトがspriteHandle
の同じ値を持つ別のクラスを作成する必要があると感じました。これは同じ画像を指しているはずです。これは、私が画面に飛び散らそうとしている画像のインスタンスが75個ある場合に最も便利です。私は毎回新しいポインタを作成するのではなく、情報がコピーされるように、ベクトルのコンストラクタレイアウトを使用したいと思います。コピーコンストラクタがメンバー
1
A
答えて
2
派生クラスのコピーコンストラクタで基本クラスのメンバーを初期化することはできません。基本クラスのコピーコンストラクタを使用して初期化する必要があります。あなただけのリストinitalizerメンバーにそれを呼び出す必要があります。
multiEntity (const multiEntity& old) :
entity(old), // initialize entity's members via entity::entity(const entity&)
entType(old.entType) // initialize multiEntity's member entType
{}
、基本クラスのコピーコンストラクタの動作はあなたが望むものではない場合、あなたは例えば、派生クラスのコンストラクタ本体にいくつかの割り当てを行うことができます
multiEntity (const multiEntity& old) :
// nothing specified, same as write entity() here
// entity's members will be initialized via entity::entity()
entType(old.entType) // initialize multiEntity's member entType
{
// perform assignment here
spriteFile = old.spriteFile;
x = old.x;
y = old.y;
spriteHandle = old.spriteHandle;
pos = old.pos;
}
+0
どうすればSDL_Surfaceがシャローコピーであることを保証できますか?私はそれが親クラスのデータをコピーするが、子クラスのアドレスだけをコピーします。 –
+0
@BobPaw回答が改訂されました。 – songyuanyao
関連する問題
- 1. C++の暗黙的に定義されたコピーコンストラクタは、メンバーのコピーコンストラクタを正しく呼び出しますか?
- 2. コピーコンストラクタ
- 3. コピーコンストラクタ
- 4. コピーコンストラクタ
- 5. コピーコンストラクタはpchのconstメンバー関数と競合しますか? gccのバグ?
- 6. doubleLinkedListコピーコンストラクタ
- 7. Cython:コピーコンストラクタ
- 8. コピーコンストラクタは
- 9. テンプレートクラス "コピーコンストラクタ"
- 10. クラスのコピーコンストラクタが削除されたときに、クラスの配列メンバーを初期化する
- 11. C++クラスのコピーコンストラクタ
- 12. prototype.jsのコピーコンストラクタ
- 13. コピーコンストラクタのconstオブジェクト
- 14. 抽象クラス、コピーコンストラクタ
- 15. ジェネリックのJavaコピーコンストラクタ
- 16. コピーコンストラクタとダイナミックメモリ
- 17. コピーコンストラクタとoperator =
- 18. コピーコンストラクタ疑い
- 19. java linked listコピーコンストラクタ
- 20. コピーコンストラクタは、プリミティブデータ型
- 21. コピーコンストラクタと継承
- 22. コピーコンストラクタの質問
- 23. std :: containers呼び出しのコピーコンストラクタにコピーコンストラクタが含まれていますか?
- 24. D構造体コピーコンストラクタ
- 25. Variadicのテンプレートコンストラクタとコピーコンストラクタ
- 26. ostringstream通報やコピーコンストラクタ
- 27. メンバ関数とコピーコンストラクタ
- 28. 一時的なコピーコンストラクタ
- 29. コピーコンストラクタでコンパイルエラーが発生する
- 30. コピーコンストラクタが機能し始めたら?
[初期化リスト(C++)で親の保護されたメンバーを初期化](https://stackoverflow.com/questions/2290733/initialize-parents-protected-members-with-initialization-list-c)の可能性の重複 –
あなたが持っている問題を指摘するために、このコードをすべて投稿する必要はありませんでした。 [例](http://ideone.com/XAu2el) – PaulMcKenzie
ありがとう@PaulMcKenzie。私はそれを覚えて、将来的にはより説明的になるようにしようとします。 –