In der Regel bekommt der Compiler ja Bauchschmerzen wenn man ein Objekt genauso nennt wie den Typen. Beispiel:
Code: Alles auswählen
class foo { ... };
foo foo;
Code: Alles auswählen
class foo foo;
Code: Alles auswählen
// foo.h
class foo
{
static void bar(void);
};
extern class foo foo;
// foo.cxx
void foo::bar(void)
{
foo.something = something_else;
}
// main.cxx
class foo foo;
Der Compiler: Nö!
Oder anders (MSVC++ 2008): error C2059: syntax error : '.'
Mir ist bewusst, dass er hier vom Typ class foo ausgeht und nicht vom Objekt. Die Frage ist wieso. Liegt es am extern? Danke für Hinweise.
Antworten wie "nenn das Objekt einfach um" sind zwar nett, aber ich frage aus Interesse. Warum geht der Compiler vom Typ aus bzw. kennt das Objekt scheinbar nicht oder wie kann ich dem Compiler das ganze korrekt vermitteln?