繁体   English   中英

shared_ptr:“在没有适当的operator()或将函数转换为指针到函数的类型的情况下,调用类类型的对象”

[英]shared_ptr : “call of an object of a class type without appropriate operator() or conversion function to pointer-to-function type”

#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);?
boost::shared_ptr<A> ptrA(new A);

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

ptrA(new A); 

调用operator() 这样做有很多原因,其中一个原因是使对象模仿功能,即函子。 但这不与shared_ptr

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM