1. ホーム
  2. c++

[解決済み] shared_ptr : "適切なoperator()またはポインタ-関数型への変換関数がないクラス型のオブジェクトの呼び出し"

2022-02-04 01:03:08

質問事項

#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() を実行します。