假设我们有一秒
#include <boost/shared_ptr.hpp>
#include <iostream>
int main()
{
boost::shared_ptr<int> bleah(); //default constructor
cout << bleah.get() << endl; //error line
boost::shared_ptr<int> barf(new int (10));
cout << *barf.get() << endl; //outputs 10 as normal.
}
为什么这不编译? 就好像函数shared_ptr :: get一下子从变量“bleah”的类定义中突然消失了。 我确信这是有原因的,但我现在看不到它。
答案 0 :(得分:7)
第一个不是shared_ptr,它是一个带零参数的函数,它返回一个名为bleah的shared_ptr,删除()。
答案 1 :(得分:3)
这在C ++中称为 Most vexing Parse 。
这句话:
boost::shared_ptr<int> bleah(); //default constructor
您声明了一个带零参数的函数,该函数返回名为bleah
的shared_ptr。
要创建对象,请将其更改为:
boost::shared_ptr<int> bleah;