我有一个错误:
错误C2504:'employee':基类未定义。
我正在使用Visual Studio 2010。
这是我第一次使用C ++进行继承,但我无法弄清楚我做错了什么。当我尝试创建一个派生另一个类的类时,它表示父类是未定义的,即使我有包含父类的头文件。可能是什么问题?
Main.cpp的:
#include <string>
#include <iostream>
using namespace std;
#include "manager.h"
int main()
{
manager ian;
ian.getdata();
ian.putdata();
return 0;
}
Manager.h:
#pragma once
#include "employee2.h"
#include "student.h"
class manager : private employee2, private student //Error happens here
{
//Stuff
};
Student.h:
#pragma once
class student
{
//Stuff
};
Employee2.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;
}
答案 0 :(得分:1)
我不相信你会根据你展示的代码得到“x未定”。实际上,您似乎使用了#include
错误。
#include employee.h
应该是
#include "employee.h"
除此之外,除了您提到的缺少的employee
课程,以及manager
在您的示例中没有getdata
和“putdata
之外,您的代码编译正常。
答案 1 :(得分:1)
确保每个文件末尾都有空格。 在编译过程之前,文件已经连同,并且你的pragma可以被停用,因为它是这样的:
}#pragma once
'}'来自之前包含的文件。
这可能是一个原因。此外,代码看起来像它应该是可编译的。