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 Class
não foram realmente definidos Namespace
? Isso resultaria em um erro em algum momento?
A::B
a 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.