共用方式為


編譯器錯誤 C3446

'class': 預設成員初始設定式不可為實值類別的成員

在 Visual Studio 2015 和以前版本中,編譯器允許 (但忽略) 實值類別成員的預設成員初始設定式。 實值類別的預設初始化一律會以零初始化成員;不允許預設建構函式。 在 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;
};