以下は4つのクラスです。私は基本的なC++構文について学びます。少年は私が使った他の言語よりもはるかに難しく、あまり寛容ではありません。私はメインクラス、ベースクラス "BaseArray"と2つのサブクラス "OrderedArray"と "UnorderedArray"を持っています。エラーC2011: 'クラス型の再定義 - 基本継承
MAIN.CPP
#include <iostream>
#include "OrderedArray.cpp"
#include "UnorderedArray.cpp"
using namespace std;
int main() {
system("PAUSE");
return 0;
}
BaseArray.cpp
#include <iostream>
using namespace std;
class BaseArray {
public:
BaseArray::BaseArray() {
}
};
OrderedArray.cpp
#include <iostream>
#include "BaseArray.cpp"
using namespace std;
class OrderedArray : public BaseArray {
OrderedArray::OrderedArray() {
}
};
UnorderedArray.cpp
#include <iostream>
#include "BaseArray.cpp"
using namespace std;
class UnorderedArray : public BaseArray {
UnorderedArray::UnorderedArray() {
}
};
私が受け取ったエラーは、他のスレッドをオンラインで偵察したことによるものです。私はそれがクラスの重複呼び出しと関係があるかもしれないと思う。正直言って、私は手がかりがありません。誰かが正しい方向に私を指すことができればそれはいいだろう、事前に感謝!私はmain.cppにの先頭に含まれていますが、私は、オブジェクトを作成し、後でサブクラスから関数を呼び出すためにそれらを必要とするのいずれかを削除することができ、このエラーを修正する
error C2011: 'BaseArray':'class' type redefinition
error C2504: 'BaseArray':base class undefined
。その後、
BaseArray.h
#ifndef BASEARRAY_H_GUARD // include guard
#define BASEARRAY_H_GUARD // include guard
// no using namespace !!
// only includes needed for what's in the header
class BaseArray {
public:
BaseArray();
};
#endif // include guard
そして、CPPにあなたのクラスの唯一の実装部分を残して:あなたは、ヘッダーであなたのベース・アレイを置くべき
あなたはインクルードガードを使用する必要があります。 – drescherjm
ほとんどの場合、cppファイルは含まれません。コードをヘッダファイルに移動するか、実装をインタフェースから分割する必要があります。 – NathanOliver
[This](http:// stackoverflow。com/a/36983180/4342498)は、基本的に質問に答えますが、私はそれを騙しと呼ぶことはありません。 – NathanOliver