0

次のコードはコンパイルに失敗するのに、後の 2 つの例は正常にコンパイルされるのはなぜですか? Windows 7 で VS 2008 を使用しています。


POD の直接初期化 (失敗):

int pod();
std::vector<int> pods;
//pods.push_back(pod); // This will generate a compiler error
// Compile error: 1>c:\test.hpp(43) : error C2664: 'std::vector<_Ty>::push_back' : cannot convert parameter 1 from 'int (__cdecl *)(void)' to 'const int &'

POD のコピー初期化 (成功:

int pod = int();
std::vector<int> pods;
pods.push_back(pod); // No error!
4

1 に答える 1

6

最も厄介な解析」を調べてください (ここでも何度も議論されています)。

int pod(); // this does not declare (nor define) an integer

ところで、なぜ1MyClass の例にそれを入れたのですか?

于 2012-08-16T19:38:31.047 に答える