尝试通过花括号初始化结构时,弹出错误:
错误 C2440:初始化:无法将“初始化程序列表”转换为“FunctionRelease”
struct FunctionRelease
{
std::string firstOperand;
std::string secondOperand;
Operation operation;
bool isTwoIdentifier = false;
};
...
int main()
{
struct FunctionRelease functionRelease = { "v0", "v1", Operation::DIV, true };
}
可能是什么原因?
通过在花括号中依次列出该类的字段的值并以逗号分隔来初始化类的实例,称为聚合初始化。很容易猜到聚合初始化的可能性需要类本身满足聚合的要求。
最新标准中的这些要求听起来不同(强调我的):
C++11
C++14
那。最近的标准放宽了对聚合类型的要求,无需直接在类中进行初始化。
因为 问题本身就显现出来了,所以使用了c++11变体。对于解决方案,删除类中成员的初始化就足够了
isTwoIdentifier。但如果可以在c++14模式下编译代码,则根本不需要更改。