void foo()
{
bar(); // error: ‘bar’ has not been declared
}
void bar()
{
}
namespace N
{
void foo()
{
N::bar(); // error: ‘bar’ is not a member of ‘N’
}
void bar()
{
}
}
class C
{
static void foo()
{
C::bar(); // works just fine
}
static void bar()
{
}
};
Was ist der Grund für diese Inkonsistenz bei der Behandlung von Aufrufen von Funktionen oberhalb ihrer Deklaration? Wie kann ich es innerhalb einer Klasse tun, aber nicht in einem Namensraum oder auf globaler Ebene?Aufruf von Funktionen über ihre Deklaration
Vielleicht gelangt Compiler mehrfach durch Klassenmethode Implementierungen innerhalb Klassendeklaration, während „C“ Compiler nur einmal durchläuft. Könnte ein Vermächtnis sein, da foo() ist im Wesentlichen C-Funktion –
Und was ist das Ergebnis nach dem Entfernen von statischen aus statischen void foo ?? – perilbrain
@ Anonym, das ändert nichts – SingerOfTheFall