错误C2514类没有构造函数。但它呢?

时间:2015-11-20 10:28:46

标签: c++

我得到了:

  

错误1错误C2514:' EmployeeListNode' :class没有构造函数

ListOfEmployee.cpp中的

但是在EmployeeListNode.h中我有:

class EmployeeListNode
{
    friend class ListOfEmployee;
public:
    EmployeeListNode(string name, double salary); //A constructor no?
};

我不明白为什么它不会认识到它是一个构造函数。 很抱歉,如果这是一个愚蠢的问题,但我无法通过搜索找到答案。

编辑:给出错误的ListOfEmployee部分:

void ListOfEmployee::insert(string nameIn, double salaryIn){
EmployeeListNode *n1 = new EmployeeListNode(nameIn, salaryIn);
EmployeeListNode* tn;
if (head){
    head = n1;
}else{
    for (tn = head; tn->next; tn = tn->next);
}

} 编辑2: 以及ListOfEmployee.h,以防它产生影响:

#pragma once
#include<string>
using namespace std;
class EmployeeListNode;
class ListOfEmployee
{
public:
    ListOfEmployee();
    void insert(string name, double salary);
    void display();
    void deleteMostRecent();
    double getSalary(string name);
    ~ListOfEmployee();
private:
    EmployeeListNode *head;
};

1 个答案:

答案 0 :(得分:13)

可能只有前向声明ListOfEmployeeNode,而不包括它的标题(因此定义)使用它。

在这种情况下,编译器知道该类,但无法访问任何成员,包括构造函数。

如果您确实包含了标题,请检查您的包含警示。如果它们在两个头文件中碰巧相同,则预处理器

可以清除该定义