次のコードを考えてみましょう:初期化オブジェクトのデータメンバC++
class Game {
private:
vector<SomeType*> vec;
OtherType obj;
public:
Game(char* configuration_file);
};
どのようにしてVECとOBJの両方がCONFIGURATION_FILEコンテンツに依存していることを考慮ゲームのコンストラクタを実装する必要がありますか?
vecとobjを構築する前に、configuration_fileを解析する必要があるため、初期化リストを使用することはできません。
コンストラクタのボディ内部でvecとobjをconstrcutする場合、両方のデフォルトコンストラクタが呼び出されるよりも、これを防ぐ方法がありますか?
このようなことを行う通常の方法は何ですか?
ありがとうございました。
なぜそれを直接コピーしないのですか?obj = OtherType(parsedData);コンストラクタの本体にあります。デフォルトのコンストラクタをprivateにすると、本体に入る前にすべてのゲームデータメンバーを初期化しなければならないので、objのデフォルトのコンストラクタを呼び出すことになるので、 –
はコンパイルされません。 –
はい、ボディコンストラクタに入る前に、オブジェクトのすべてのデフォルトコンストラクタが呼び出されます。 john zwickの解決策は良いです –