Der folgende Code ist in VC++ 6 kompiliert. Ich verstehe nicht, warum ich den Kompilierungsfehler C2079: 'b' uses undefined class 'B'
für den folgenden Code bekomme.Vorwärtsdeklaration der Klasse scheint nicht in C++ zu funktionieren
Klasse B Quelle
#include "B.h"
void B::SomeFunction()
{
}
Klasse B Kopf
#include "A.h"
struct A;
class B
{
public:
A a;
void SomeFunction();
};
eine Header-struct
#include "B.h"
class B;
struct A
{
B b;
};
I f Ich habe den Header der Klasse B folgendermaßen geändert, dann wird kein Fehler angezeigt. Aber die Header-Deklaration wird nicht an der Spitze sein!
Klasse B-Header mit seltsamen Kopf Erklärung
struct A;
class B
{
public:
A a;
void SomeFunction();
};
#include "A.h"
Können Sie sie in der gleichen Header-Datei? Ich weiß, dass das keine besonders technische Antwort ist, aber Sie könnten das Ganze zusammen vermeiden, wenn es machbar ist. – ihtkwot
Es spielt keine Rolle, wenn Sie beide Klassendefinitionen in dieselbe Header-Datei schreiben, eine muss immer noch an erster Stelle stehen und kann die Größe der anderen Klasse nicht kennen. – Peter
danke für die Klarstellung, ich bin noch sehr neu dabei und hoffe, dass ich keine schlechten Ratschläge anbiete, die ich mir – ihtkwot