当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《c++编译与构造函数/析构函数定义相关的错误》经验,为你挑选了1个好方法。

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

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

推荐阅读
保佑欣疼你的芯疼
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有