Kurde, teraz całkiem zgłupiałem. Przed całością znadują się jeszcze dwa enumy, które pominąłem w przykładzie bo uznałem je za nieistotne. Sprawdziłem jak wpływają na program i nie rozumiem.
Najpierw spróbowałem usunąć je z kodu, kompilowało się świetnie. Następnie je przywróciłem i wkleiłem na tę stronę co podałeś, zgodnie z przewidywaniami pojawiał się błąd. Skasowałem znowu te enumy i napisałem jakieś przykładowe, kompilowało się. U mnie również. Skopiowałem jeszcze w miejsce tych przykładowych enumów na stronie enumy z mojego kodu i też śmigało. W CodeBlocksie nadal nie.
Spróbowałem jeszcze wkleić na stronę znowu te działające przykłady i je przepisać na to co mam w kodzie, wtedy przestały działać. przynajmniej póki trzymałem nazwy klas z mojego kodu, po zmianie na A, B, C, D, ładnie się skompilowało. Nazwy w kodzie mam napisane dobrze, sprawdzałem parę razy. No i warto zaznaczyć że kod kompilował się z tymi nazwami dopóki miał foobarowe enumy.
To jest z mojego kodu:
enum ComponentType
{
None,
Window,
Line,
Button,
Text
};
enum PositionType
{
Free,
Right,
Left,
Up,
Down
};
To są przykładowe:
enum Foobar
{
Bar1,
Bar2,
Bar3
};
enum Barfoo
{
Foo1,
Foo2,
Foo3
};
Dla mnie wyglądają tak samo, a jednak coś się chrzani przy tym pierwszym. To jest całość: (w miejsce enumów wstaw dowolne z powyższych)
struct Foo
{
enum Foobar
{
Bar1,
Bar2,
Bar3
};
enum Barfoo
{
Foo1,
Foo2,
Foo3
};
struct A
{
};
struct B : public A
{
};
struct C : public A
{
};
struct D : public A
{
};
union
{
B barB;
C barC;
D barD;
};
};