class Namespace::Class;
Por que eu tenho que fazer isso ?:
namespace Namespace {
class Class;
}
Usando o VC ++ 8.0, o compilador emite:
erro C2653: 'Namespace': não é um nome de classe ou namespace
Presumo que o problema aqui é que o compilador não pode dizer se Namespaceé uma classe ou um espaço para nome? Mas por que isso importa, pois é apenas uma declaração direta?
Existe outra maneira de declarar adiante uma classe definida em algum espaço para nome? A sintaxe acima parece que estou "reabrindo" o espaço para nome e estendendo sua definição. E se Classnão foram realmente definidos Namespace? Isso resultaria em um erro em algum momento?
A::Ba Aé um identificador namespace em vez de um nome de classe?
Namespaceé uma classe ou um espaço para nome. Apenas não chegue nem perto da sugestão de uma possibilidade concebível de iniciar uma guerra de linguagem por causa da sintaxe.