2015-11-20 55 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的文檔中所演示的那樣,它並沒有在那裏表示。 –

相關問題