我得到了:
ListOfEmployee.cpp中的错误1错误C2514:' EmployeeListNode' :class没有构造函数
但是在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;
};
答案 0 :(得分:13)
可能只有前向声明ListOfEmployeeNode
,而不包括它的标题(因此定义)使用它。
在这种情况下,编译器知道该类,但无法访问任何成员,包括构造函数。
如果您确实包含了标题,请检查您的包含警示。如果它们在两个头文件中碰巧相同,则预处理器
可以清除该定义