编译器错误 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;
};
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈