1

オブジェクト指向プログラムを必要とする最初の課題を達成しました。私は (かなり大規模で複雑な) プロジェクトに取り組み始めましたが、複数のクラス ファイルとそれらに関連付けられた .h ファイルをリンクする際に、いくつかの問題にぶつかりました。インクルードガードがあり、グローバル変数がないにもかかわらず、基本的に「クラスの複数定義」エラーが発生し続けます。割り当て自体のコードは投稿しませんが、同じエラーが発生する非常に単純化された例を次に示します。

//Runner file.
#include "Class1.cpp"
int main(){
    Class1 classtest();
    return 0;
}

-

//Class1.h
#ifndef CLASS1_H
#define CLASS1_H
class Class1
{
    public:
        Class1();
};
#endif // CLASS1_H

-

//Class1.cpp
#include "Class1.h"
#include <iostream>
#include "Class2.cpp"
using namespace std;
Class1::Class1()
{ 
    cout << "Created Test Class1";
    Class2 testClass();
}

そして、ほぼ同一のClass2ファイル

//Class2.h
#ifndef CLASS2_H
#define CLASS2_H
class Class2
{
    public:
        Class2();
};
#endif // CLASS2_H

-

#include "Class2.h"
#include <iostream>
using namespace std;

Class2::Class2()
{
    cout << "Created Class 2";
}

その後、全体で約 1.4 メトリック クラプトンのエラーが生成されます。そのほとんどは次の形式です: obj\Debug\Runner.o||In functionClass2':|C:\Users\MikeD\Desktop\C++\ObjectOTesting\Class2.cpp|6| 複数の定義Class2::Class2()'| obj\Debug\Class2.o:C:\Users\MikeD\Desktop\C++\ObjectOTesting\Class2.cpp|6|first defined here|

ここでばかげたことをしていることはわかっていますが、正確に何をしているのかはわかりません。どんな助けでも本当に感謝しています。

4

1 に答える 1

2

CPP ファイルではなく#include、コンパイルします。CPP ファイル、#includeH ファイル。

于 2012-11-06T20:58:35.047 に答える