桜、抹茶、白、日記

名古屋市在住のC++使いのcoderの日記だったもの。

C4351

たまたまVisualStudio2005使っていたら C4351 なんて警告が出た。

 class CTest
 {
 public:
     CTest()
         :   m_anValue()   // C4351
     {
     }
     virtual ~CTest()
     {
     }
 private:
     int m_anValue[ 100 ];
 };

コンストラクタの初期化リストに配列を入れていると起こる模様。今までは配列が初期化されることは無かったが、VisualStudio2005では配列の初期化が行われるように動作が変更されている。今まで全部の変数を初期化リスト入れるように実装していたが、便利になった模様。

#if _MSC_VER > 1310
   #pragma warning( disable : 4351 )
#endif

を入れておけば、警告はされないで初期化はされる。