編譯器錯誤 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;
};