O que realmente está acontecendo nesta declaração AnonymousClass (variável
Tentando compilar:
class AnonymousClass
{
public:
AnonymousClass(int x)
{
}
};
int main()
{
int x;
AnonymousClass(x);
return 0;
}
gera erros do MSVC:
foo.cpp(13) : error C2371: 'x' : redefinition; different basic types
foo.cpp(12) : see declaration of 'x'
foo.cpp(13) : error C2512: 'AnonymousClass' : no appropriate default constructor available
s mensagens de erro de @g ++ são semelhantes:
foo.cpp: In function ‘int main()’:
foo.cpp:13: error: conflicting declaration ‘AnonymousClass x’
foo.cpp:12: error: ‘x’ has a previous declaration as ‘int x’
foo.cpp:12: warning: unused variable ‘x’
É facilmente corrigível, dando oAnonymousClass
objeta um nome explícito, mas o que está acontecendo aqui e por quê? Presumo que isso seja mais estranho à sintaxe da declaração (como os casos descritos em Q10.2 e Q10.21 da FAQ comp.lang.C ++), mas não estou familiarizado com est