2015-11-20 28 views
6

我越来越:错误C2514类没有构造函数。但它呢?

错误1个错误C2514: 'EmployeeListNode':类没有构造

在ListOfEmployee.cpp

但EmployeeListNode.h我:

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

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

编辑:

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的部分 而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; 
}; 
+0

貌似你试图在某处缺省方式构造的'EmployeeListNode'被discareded。也许你有一个作为类成员,并且不要在初始化列表中初始化它?请张贴错误来自哪里。 – TartanLlama

+0

我编辑它来添加ListOfEmployee.cpp这个给出错误的部分。 –

回答

12

它可以是因为你只是提前宣布ListOfEmployeeNode,而不包括它的标题(以及定义)在哪里使用。

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

如果您确实包含标题,请检查您的包含警卫。如果他们恰好是在两个头文件一样,定义可以通过预处理

+0

是的,我忘了将它包含在cpp中。我现在觉得自己像个白痴。
非常感谢! –

+1

+1正如在[错误C2514](https://msdn.microsoft.com/en-us/library/4ce3zbbc.aspx) – Clifford

+0

@ Clifford的文档中所演示的那样,它并没有在那里表示。 –

相关问题