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