C ++错误:隐式声明的定义

时间:2017-11-03 09:40:35

标签: c++ compiler-errors

我用C ++编写这个链表程序

当我测试程序时,我收到了错误

  

linkedlist.cpp:5:24:错误:隐式声明' constexpr的定义LinkedList :: LinkedList()'   链表::链表(){

这是代码

linkedlist.h文件:

#include "node.h"
using namespace std;

class LinkedList {
  Node * head = nullptr;
  int length = 0;
public:
  void add( int );
  bool remove( int );
  int find( int );
  int count( int );
  int at( int );
  int len();
};

linkedlist.cpp文件:

#include "linkedlist.h"
#include <iostream>
using namespace std;

LinkedList::LinkedList(){
  length = 0;
  head = NULL;
}
/*and all the methods below*/

请帮忙。

3 个答案:

答案 0 :(得分:11)

在头文件中声明无参数构造函数:

class LinkedList {
{
....
public:
    LinkedList();
    ....
}

您在.cpp文件中定义它而不实际声明它。但是由于编译器默认提供了这样的构造函数(如果没有声明其他构造函数),错误清楚地表明您正在尝试定义隐式声明的构造函数。

答案 1 :(得分:0)

要在类外定义构造函数,您需要先在公共说明符中声明它,然后在类外定义它。

#include "node.h"
using namespace std;

class LinkedList {
  Node * head = nullptr;
  int length = 0;
public:
  LinkedList();
  void add( int );
  bool remove( int );
  int find( int );
  int count( int );
  int at( int );
  int len();
};


LinkedList::LinkedList(){
  length = 0;
  head = NULL;
}

答案 2 :(得分:0)

您应该在类内部声明构造函数,以便在类外部定义cunstructor。否则,您应该在类本身中定义它。您的类应如下所示。

            #include "node.h"
            using namespace std;
            class LinkedList {
              Node * head = nullptr;
              int length = 0;
            public:
              LinkedList();
              void add( int );
              bool remove( int );
              int find( int );
              int count( int );
              int at( int );
              int len();
            };