0

私の質問は、スマートポインターを他のポインターに割り当てる方法です。一時変数を回避する方法もわかりませんか?

typedef boost::asio::ip::tcp::socket            TBoostSocket;
typedef boost::shared_ptr<TBoostSocket>        TSocket;

TSocket createSocket(const IpcNode::TPath& a_path) {

    TSocket socket(new TBoostSocket(*this->getIoservice()));
    return socket;

}

// 別の関数で

TSocket result();

result= createSocket(a_path);

// コンパイラ出力
エラー: 一時アドレスの取得 [-fpermissive]

41: エラー: 関数 'IPC::TcpServices::TSocket IPC::result() の割り当ては、'TSocket* {aka boost::shared_ptr >*}' を 'TSocket() {aka boost::shared_ptr >() に変換できません}' 代入

明らかな何かが欠けていることはわかっています。今すぐ見ることができます。

4

1 に答える 1

2

以下は、関数を宣言します(引数をとらずに戻りますTSocket):

TSocket result();

次のように変更します。

TSocket result;
于 2012-11-27T10:52:12.363 に答える