1
#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);?
4

1 に答える 1

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

A*に変換する変換コンストラクターを呼び出しますshared_ptr。これは、ptr を作成するデフォルトの方法です。

ptrA(new A); 

呼び出しますoperator()。これは多くの理由で使用されます。その 1 つは、オブジェクトに関数、つまりファンクターをエミュレートさせるためです。しかし、これは では使用されませんshared_ptr

コンストラクターは存在しますが、存在しoperator()ません。

于 2013-06-27T03:16:16.430 に答える