class Namespace::Class;
¿Por qué tengo que hacer esto ?:
namespace Namespace {
class Class;
}
Usando VC ++ 8.0, el compilador emite:
error C2653: 'Espacio de nombres': no es un nombre de clase o espacio de nombres
Supongo que el problema aquí es que el compilador no puede decir si Namespace
es una clase o un espacio de nombres. Pero, ¿por qué importa esto ya que es solo una declaración adelantada?
¿Hay otra forma de declarar hacia adelante una clase definida en algún espacio de nombres? La sintaxis anterior parece que estoy "reabriendo" el espacio de nombres y extendiendo su definición. ¿Qué pasa si Class
no se definió realmente en Namespace
? ¿Esto resultaría en un error en algún momento?
A::B
el A
es un identificador de espacio de nombres en lugar de un nombre de clase?
Namespace
es una clase o un espacio de nombres. Simplemente no se acerque al indicio de una posibilidad de iniciar una guerra de lenguaje sobre la sintaxis.