Possible Duplicate:
Why is it an error to use an empty set of brackets to call a constructor with no arguments?
Most vexing parse: why doesn't A a(()); work?
Это меня бесит. Может быть, это слишком просто.
struct Foo
{
Foo() {}
Foo(const Foo& f) {}
void work() {}
};
int main()
{
Foo f( Foo() );
f.work();
}
GCC 4.6 дает мне:
error: request for member ‘work’ in ‘f’, which is of non-class type ‘Foo(Foo (*)())’
После исключения операции копирования эффективный код может иметь вид:
int main()
{
Foo f;
f.work();
}
Но почему я не могу позвонить work()
??
Изменить:
Да, дубликат (см. ниже ). Не нашел исходный пост при первом поиске, потому что источник симптомов этого находится там, где я этого не ожидал.