次の方法で共有


コンパイラ エラー C3446

'class': 値クラスのメンバーには、既定のメンバー初期化子を使用できません

Visual Studio 2015 以前では、コンパイラは、値クラスのメンバーの既定のメンバーの初期化子を許可しました (ただし無視しました)。 値クラスの既定の初期化子は、常にメンバーを 0 に初期化します。既定のコンストラクターは許可されません。 Visual Studio 2017 年では、この例に示すように、既定メンバー初期化子は、コンパイラ エラーを発生させます。

次の例では、Visual Studio 2017 以降で C3446 が生成されます。

// C3446.cpp
value struct V
{
       int i = 0; // error C3446: 'V::i': a default member initializer
                  // is not allowed for a member of a value class
       int j {0}; // C3446
};

エラーを修正するには、初期化子を削除します。

// C3446b.cpp
value struct V
{
       int i;
       int j;
};