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()
{
}
};
¿Cuál es la razón detrás de esta incoherencia al tratar las llamadas a las funciones por encima de su declaración? ¿Cómo puedo hacerlo dentro de una clase, pero no dentro de un espacio de nombres o en un alcance global?funciones de llamada por encima de su declaración
Tal vez, compilador pasa varias veces a través de implementaciones de métodos de clase dentro de declaración de la clase, mientras que "C" compilador pasa sólo una vez. Podría ser algún legado, ya que foo() es esencialmente la función C –
¿Y cuál es el resultado después de eliminar la estática del vacío estático foo? – perilbrain
@Anonymous, eso no cambia nada – SingerOfTheFall