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()
{
}
};
Jakie są przesłanki stojące za tą niekonsekwencją traktowania połączeń do funkcji powyżej ich deklaracji? Jak mogę to zrobić wewnątrz klasy, ale nie w przestrzeni nazw lub w zasięgu globalnym?Wywołanie funkcji powyżej ich deklaracji
Może kompilator przechodzi wielokrotnie poprzez implementacje metody klasy wewnątrz deklaracji klasy, podczas gdy „C” kompilator przechodzi tylko raz. Może być jakimś spuścizną, ponieważ foo() jest zasadniczo funkcją C –
A jaki jest wynik po usunięciu statycznego ze statycznego void foo ?? – perilbrain
@Anonymous, to nic nie zmienia – SingerOfTheFall