C++ C++;对象声明和无默认构造函数(用户声明或隐式声明)
如果我有C++ C++;对象声明和无默认构造函数(用户声明或隐式声明),c++,constructor,default,C++,Constructor,Default,如果我有 class Something { public: Something(int whatever) : whatever_(whatever) {} private: int whatever_; } 那么当我在堆栈上创建一个对象时会发生什么呢 Something something; 由于没有默认构造函数?在符合条件的编译器上,您会得到一个编译错误 以下代码: class Something { public: Something(int whatever
class Something
{
public:
Something(int whatever) : whatever_(whatever) {}
private:
int whatever_;
}
那么当我在堆栈上创建一个对象时会发生什么呢
Something something;
由于没有默认构造函数?在符合条件的编译器上,您会得到一个编译错误 以下代码:
class Something
{
public:
Something(int whatever) : whatever_(whatever) {}
private:
int whatever_;
};
Something something;
使用gcc8.2编译时,会导致以下编译错误:
<source>:9:11: error: no matching function for call to 'Something::Something()'
Something something;
^~~~~~~~~
<source>:4:5: note: candidate: 'Something::Something(int)'
Something(int whatever) : whatever_(whatever) {}
^~~~~~~~~
<source>:4:5: note: candidate expects 1 argument, 0 provided
<source>:1:7: note: candidate: 'constexpr Something::Something(const Something&)'
class Something
^~~~~~~~~
<source>:1:7: note: candidate expects 1 argument, 0 provided
<source>:1:7: note: candidate: 'constexpr Something::Something(Something&&)'
<source>:1:7: note: candidate expects 1 argument, 0 provided
Compiler returned: 1
:9:11:错误:调用'Something::Something()'时没有匹配的函数
某物;
^~~~~~~~~
:4:5:注:候选人:'Something::Something(int)'
某物(int-whatever):whatever(whatever){
^~~~~~~~~
:4:5:注意:候选者需要1个参数,提供0个参数
:1:7:注:候选人:'constexpr Something::Something(const Something&)'
分类
^~~~~~~~~
:1:7:注意:候选者需要1个参数,提供0
:1:7:注:候选人:“constexpr某物::某物(某物&&)”
:1:7:注意:候选者需要1个参数,提供0
返回的编译器:1
现场示例可访问。您是否可以添加一个;在最后一次}之后重试?它为我编译。是的,一个拼写错误,已修复。@MartinF那么您使用的编译器、编译器版本和编译器选项是什么?问题是我在删除默认构造函数后没有进行干净的编译。它现在在抱怨。很抱歉