Im Moment hat mein Projekt zwei Klassen und eine Hauptklasse. Da die beiden Klassen voneinander erben, verwenden sie beide Forward-Deklarationen. Im ersten Objekt, direkt unterhalb der #include-Anweisung, initialisiere ich zwei Enums vor der Klassendefinition. Ich kann beide Enums problemlos in dieser Klasse verwenden. Wenn ich jedoch versuche, diese Enums in der anderen Klasse zu verwenden, die von der ersten erbt, erhalte ich eine Fehlermeldung, dass das Enum nicht deklariert wurde. Wenn ich versuche, die Enum in der zweiten Klasse neu zu definieren, erhalte ich einen Neudefinitionsfehler.
Ich habe sogar versucht, einen Trick anzuwenden, über den ich gerade gelesen habe, und jede Enum in ihren eigenen Namespace zu stellen; das hat nichts geändert.
Hier ist ein Beispiel:
#ifndef CLASSONE_H
#define CLASSONE_H
namespace Player
{
enum Enum
{
One,
Two,
};
}
#endif
Dann versuche ich in der zweiten Klasse, die zuvor deklarierte Aufzählung zu verwenden:
void AddPlayer(Player::Enum playerNumber);
und erhalte stattdessen eine Fehlermeldung, dass 'Player' nicht deklariert wurde.