0

为什么下面的代码编译失败,而后面的两个例子编译成功?我在 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

顺便说一句,你为什么把它1放在 MyClass 例子中?

于 2012-08-16T19:38:31.047 回答