Если вы объявляете анонимный объект с одним аргументом, просто поместите его в пару скобок!

ка скомпилировать:

class AnonymousClass
{
public:
    AnonymousClass(int x)
    {
    }
};


int main()
{
    int x;
    AnonymousClass(x);
    return 0;
} 

генерирует ошибки из 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

Сообщения об ошибках g ++ похожи:

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’

Это легко исправить, давAnonymousClass возражать против явного имени, но что здесь происходит и почему? Я предполагаю, что это более странный синтаксис объявления (как в случаях, описанных вQ10.2 а такжеQ10.21 из comp.lang.C ++ FAQ), но я не знаком с этим.

Ответы на вопрос(3)

Ваш ответ на вопрос