shared_ptr:“没有适当的operator()或转换函数调用类类型的对象到指针到函数类型”

时间:2013-06-27 03:15:14

标签: c++ shared-ptr

#include "boost\shared_ptr.hpp"

class A{

public:
A(){}
~A(){}

};

int main()
{
    boost::shared_ptr<A> ptrA;
    ptrA(new A); 

}

我想知道为什么这段代码不能编译?如果我只是使用

,我想知道区别
boost::shared_ptr<A> ptrA(new A);?

1 个答案:

答案 0 :(得分:3)

boost::shared_ptr<A> ptrA(new A);

调用转换构造函数,将A*转换为shared_ptr。这是构造ptr的默认方式。

ptrA(new A); 

致电operator()。这有很多原因,一个是使对象模拟函数,即仿函数。但这不适用于shared_ptr

构造函数存在,operator()不存在。