struct SS {int a; int s;};
int main ()
{
vector<SS> v;
v.push_back(SS{1, 2});
}
可以编译代码而不会出现任何错误。然而,当结构在类中初始化时,我得到了编译错误。有人能解释一下吗?
struct SS {int a = 0; int s = 2;};
错误:
In function ‘int main()’:
error: no matching function for call to ‘SS::SS(<brace-enclosed initializer list>)’
v.push_back(SS{1, 2});
^
note: candidates are:
note: constexpr SS::SS()
struct SS {int a = 0; int s = 2;};
^
note: candidate expects 0 arguments, 2 provided
note: constexpr SS::SS(const SS&)
note: candidate expects 1 argument, 2 provided
note: constexpr SS::SS(SS&&)
note: candidate expects 1 argument, 2 provided
发布于 2020-05-01 10:13:56
我也有同样的问题。在我的例子中,我有两个struct
,它们都有一些构造函数,包括从抽象父类继承的复制构造函数。
当上面的建议不起作用时,我终于意识到我需要从复制构造函数中删除explicit
说明符,这就消除了错误。
我想我会分享,以防另一个可怜的灵魂像我一样花同样长的时间来寻找这个错误。
https://stackoverflow.com/questions/18184096
复制相似问题