重複の可能性:
括弧の空のセットを使用して引数なしでコンストラクターを呼び出すとエラーになるのはなぜですか?
最も厄介な解析: なぜ A は a(()); を実行しないのですか? 仕事?
これは私を怒らせます。単純すぎるのかもしれません。
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()
??
編集:
はい、複製します (以下を参照)。最初に検索したときに元の投稿が見つかりませんでした。これは、この症状の原因が予想外の場所にあるためです。