2

我有一个错误:

错误 C2504:“员工”:未定义基类。

我正在使用 Visual Studio 2010。

这是我第一次在 C++ 中使用继承,我不知道我做错了什么。当我尝试创建一个派生另一个类时,它说父类未定义,即使我包含了父类的头文件。可能是什么问题呢?

主要.cpp:

#include <string>
#include <iostream>
using namespace std;

#include "manager.h"

int main()
{
manager ian;
ian.getdata();
ian.putdata();

return 0;
}

经理.h:

#pragma once
#include "employee2.h"
#include "student.h"

class manager : private employee2, private student //Error happens here
{
    //Stuff
};

学生.h:

#pragma once
class student
{
    //Stuff
};

员工2.h:

#pragma once
#include "employee.h"
class employee2 : employee
{
    //Stuff
};

它说学生类和employee2类都是未定义的。此外,employee2 类继承了一个名为employee 的类,它也得到了同样的错误。我究竟做错了什么?

编辑:这是我的 student.cpp 文件。我遇到错误的所有其他 .cpp 文件看起来都与这个类似。

#include "student.h"

void student::getedu(){
cout << "Enter name of school or university: ";
cin >> school;
cout << "Enter highest degree earned \n";
cout << "(Highschool, Bachelor's Master's, PhD)";
cin >> degree;
}

void student::putedu() const{
cout << "\n School or university: " << school;
cout << "\n Highest degree earned: " << degree;
}
4

2 回答 2

1

确保每个文件的末尾都有空格。在编译过程之前,文件被连接,并且您的 pragma 可能会因为以下原因而被停用:

}#pragma once

'}' 来自先前包含的文件。

这可能是一个原因。此外,代码看起来应该是可编译的。

于 2012-11-29T11:27:46.033 回答
1

我不相信您会根据您显示的代码得到“x 未定义”。实际上,您似乎使用#include错误。

#include employee.h

应该

#include "employee.h"

除此之外,除了employee您提到的缺少的类,并且在您的示例中manager没有getdataand "之外putdata,您的代码将编译得很好。

于 2012-04-08T20:41:02.560 回答