我正在尝试定义我的类的构造函数和析构函数,但我不断收到错误:
隐式声明的'x :: x()'的定义
这是什么意思?
部分代码:
///Constructor
StackInt::StackInt(){
t = (-1);
stackArray = new int[20];
};
///Destructor
StackInt::~StackInt(){
delete[] stackArray;
}
Run Code Online (Sandbox Code Playgroud)
Mic*_*urr 48
在类声明中(可能在头文件中),您需要具有以下内容:
class StackInt {
public:
StackInt();
~StackInt();
}
Run Code Online (Sandbox Code Playgroud)
让编译器知道你不需要默认的编译器生成版本(因为你提供它们).
声明可能会有更多,但你至少需要那些 - 这将让你开始.
你可以通过使用非常简单的方法来看到这个:
class X {
public: X(); // <- remove this.
};
X::X() {};
int main (void) { X x ; return 0; }
Run Code Online (Sandbox Code Playgroud)
编译它,它的工作原理.然后使用注释标记删除该行并再次编译.你会看到你的问题出现了:
class X {};
X::X() {};
int main (void) { X x ; return 0; }
Run Code Online (Sandbox Code Playgroud)
Run Code Online (Sandbox Code Playgroud)
qq.cpp:2: error: definition of implicitly-declared `X::X()'