Im Folgenden sind von 4 Klassen, ich lerne über grundlegende C++ Syntax und Junge ist es viel schwieriger und weniger nachsichtig als andere Sprachen, die ich verwendet habe. Ich habe eine Hauptklasse, Basisklasse "BaseArray" und zwei Unterklassen "OrderedArray" und "UnorderedArray".Fehler C2011: 'Klassentyp Neudefinition - Grundlegende Vererbung
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() {
}
};
Die Fehler, die ich erhalte, sind wie folgt, wenn ich andere Threads online suche. Ich denke, es könnte mit doppeltem Aufruf von Klassen zu tun haben. Um ehrlich zu sein, ich habe keine Ahnung. Wenn mir jemand in die richtige Richtung zeigen könnte, wäre das nett, danke im Voraus!
error C2011: 'BaseArray':'class' type redefinition
error C2504: 'BaseArray':base class undefined
diesen Fehler beheben ich einen der umfasst an der Spitze der main.cpp entfernen können, aber ich brauche den später auf Objekte und Anruffunktionen von den Unterklassen zu erstellen.
Sie müssen Include-Wächter verwenden. – drescherjm
Man sollte fast nie eine cpp-Datei enthalten. Sie müssen Ihren Code in Headerdateien verschieben oder die Schnittstelle von der Implementierung trennen. – NathanOliver
[Dies] (http: // stackoverflow.com/a/36983180/4342498) beantwortet im Grunde die Frage, aber ich würde es nicht ein Betrüger nennen – NathanOliver