2

エラーが発生しました:

エラーC2504:'従業員':基本クラスが定義されていません。

VisualStudio2010を使用しています。

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

これは、studentクラスと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

あなたが示したコードに基づいて、「x is undefined」が表示されるとは思いません。実は使い方が#include間違っているようです。

#include employee.h

する必要があります

#include "employee.h"

それ以外は、employeeあなたが言及した欠落しているクラスを除いて、あなたの例ではand "がmanagerなくても、コードは正常にコンパイルされます。getdataputdata

于 2012-04-08T20:41:02.560 に答える
1

各ファイルの最後に空白があることを確認してください。コンパイル プロセスの前にファイルが連結され、次のような sth が原因でプラグマが非アクティブになる可能性があります。

}#pragma once

「}」は、以前にインクルードされたファイルから取得されます。

それが理由かもしれません。さらに、コードはコンパイル可能であるように見えます。

于 2012-11-29T11:27:46.033 に答える