错误C2514类没有构造函数.但确实如此

error C2514 class has no constructors. But it does?

本文关键字:构造函数 C2514 错误      更新时间:2023-10-16

我得到了:

错误1错误C2514:"EmployeeListNode":类没有构造函数

在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;
};

可以只转发声明的ListOfEmployeeNode,而不在使用它的地方包含它的头(以及定义)。

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

如果您确实包含了标头,请检查您的包含防护装置。如果它们恰好在两个头文件中相同,则预处理器可以丢弃该定义