c ++编译与构造函数/析构函数定义相关的错误

25 c++ constructor destructor

我正在尝试定义我的类的构造函数和析构函数,但我不断收到错误:

隐式声明的'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)

qq.cpp:2: error: definition of implicitly-declared `X::X()'
Run Code Online (Sandbox Code Playgroud)