我用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*/
请帮忙。
答案 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();
};