C++の参照の初期化を、コンストラクタで行うことに関する質問です。
コンストラクタで受け取った列挙体の値に応じて、参照に代入する値を変えたいと考えています。
そこで下のようなコードを書きました。
C++
1 2enum StoreType{ 3 Udon, 4 Gyudon, 5}; 6 7class Store { 8public: 9 Store(StoreType storeType); 10private: 11 Texture& texture; 12}; 13
C++
1Store::Store(StoreType storeType) 2{ 3 switch (storeType) { 4 case Udon: 5 texture = TextureAsset(L"Udon"); 6 break; 7 case Gyudon: 8 texture = TextureAsset(L"Gyudon"); 9 break; 10 } 11}
しかしこれでは、「参照が初期化されずに宣言されています」と出てコンパイルが通りません。
かといって、コンストラクタ初期化子では複雑な条件分岐を書くことが出来ません。
この場合、どのようにコードを書き換えればよいのでしょうか。このようなケースで参照を利用することは出来ますか。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/11/19 02:24 編集