gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 12:59:35 28 4
gpt4 key购买 nike

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

definition of implicitly-declared 'x::x()'

什么意思?

部分代码:

///Constructor
StackInt::StackInt(){
t = (-1);
stackArray = new int[20];
};

///Destructor
StackInt::~StackInt(){
delete[] stackArray;
}

最佳答案

在类声明中(可能在头文件中),您需要有如下内容:

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()'

关于与构造函数/析构函数定义相关的c++编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/708008/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com