-2

物理学のプログラミング モジュールのコースワークを行っていますが、問題が発生しています。Person と呼ばれるクラスと Employee と呼ばれるそのサブクラスを次のように作成する必要がありました。

#ifndef PERSON_HPP_
#define PERSON_HPP_

class Person {
public:
    Person(const std::string & name="Anonymous"): name(name) {;}
    ~Person() {;}

    std::string getname(){
        return name;
    }

    void setname(std::string newname) {
        name = newname;
    }

    void Print();

private:
    std::string name;
};

#endif /* PERSON_HPP_ */

Person.cpp:

void Person::Print(){
    std::string name = Person::getname;
    std::cout << name << std::endl;
}

従業員.hpp:

#ifndef EMPLOYEE_HPP_
#define EMPLOYEE_HPP_

class Employee: public Person {
public:
    Employee(const std::string & name, const std::string & job) : name(name), job(job){;}
    ~Employee() {;}

    std::string getjob(){
        return job;
    }

    void setjob(std::string newjob) {
        job = newjob;
    }

    void Print() const;

private:
    std::string job;
};

#endif /* EMPLOYEE_HPP_ */

従業員.cpp:

void Employee::Print(){
    Person::Print();
    std::string job = Employee::getjob;
    std::cout << job << std::endl;
}

main.cpp:

#include <iostream>
#include <string>
#include <vector>
#include "Person.hpp"
#include "Person.cpp"
#include "Employee.hpp"
#include "Employee.cpp"
#include "Friend.hpp"
#include "Friend.cpp"

int main() {
    return 0;
}

エラーは私のemployee.cppにあります。このエラーをビルドすると、次のように表示されます: ../Employee.cpp:10:6: エラー: 宣言されていない識別子 'Employee' の使用

私はおそらく非常に基本的な間違いを犯したことを認識していますが、それが見えないのはイライラします.

どんな助けでも素晴らしいでしょう!前もって感謝します, ショーン・クーパー

注: employee.cpp の目的は、従業員の名前とそれに関連する職務を出力することです。

4

3 に答える 3

1

あなたのエラーはここにあります:

#include "Employee.cpp"

ファイルをインクルードしないでください.cpp。リンク段階の個別の入力としてコンパイルしてください。

#include "Employee.hpp"また、Employee.cppファイルに入れることを忘れないでください!#include "Person.cpp"同様のことが etc. にも当てはまります。

于 2014-03-24T18:02:02.843 に答える
1

は次includeのようになります。

Person.cpp:

#include <iostream>
#include <string>
#include "Person.hpp"

従業員.cpp:

#include <iostream>
#include <string>
#include "Employee.hpp"

main.cpp

#include <iostream>
#include <string>
#include <vector>
#include "Person.hpp"
#include "Employee.hpp"
#include "Friend.hpp"

つまり、それぞれ.cppの (実装) には、それぞれの.hpp(インターフェース) と、必要な追加のヘッダー ( など<string>) が含まれています。main.cpp必要なすべてのヘッダーが含まれていますが、他のファイルは含まれていません.cpp。コンパイラはすべての.cppファイルを個別に解析し、リンカーは結果を実行可能ファイルにリンクします。経験則として、絶対にどこにも含めないでください。.cpp

特定のエラーは、コンパイラが見たときです

void Employee::Print()

そして何があるかわかりませんEmployee。を含めると、の定義Employee.hppを取り込むことでこれが修正されます。Employee

于 2014-03-24T18:02:14.300 に答える