c – 错误C2514类没有构造函数.但它呢?

前端之家收集整理的这篇文章主要介绍了c – 错误C2514类没有构造函数.但它呢?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我越来越:

Error 1 error C2514: ‘EmployeeListNode’ : class has no constructors

在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,而不包括它的头部(因此定义)使用它.

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

如果您确实包含了标题,请检查您的包含警戒.如果它们在两个头文件中碰巧相同,则预处理器可以清除该定义

猜你在找的C&C++相关文章