質問

私の問題から、C++の標準ライブラリの拡張子":

運動6
言ったことをも課2.4.2 まな施 shared_ptr物と同じ ポインタです。の危険とも shared_ptrオブジェクトやその子孫 最終的にみを削除する 資源は、通常る ります。実際、これを実行する事ができます。場合 だ注意しなくてはならない。なので特に 有用なプログラムを書くこと を構築します二 shared_ptr物から 同じポインタとを削除する 資源だけます。

以下が私の答え:

template <typename T>
void nonsence(T*){}
struct SX {
     int data;
     SX(int i = 0) :
              data(i) {
              cout << "SX" << endl;
     }
     ~SX() {
              cout << "~SX" << endl;
     }
};
int main(int argc, char **argv) {
    SX* psx=new SX;
    shared_ptr<SX> sp1(psx),sp2(psx,nonsence<SX>);
    cout<<sp1.use_count()<<endl;
    return 0;
}

とは言えないように思いでソリューション--を壊してしまうことを意味していを解決で使用によるコンストラクタです。誰でもできるのでいいですか?thx、許の私の悪い。

役に立ちましたか?

解決 4

他のヒント

だが構築の shared_ptr 最初から shared_ptr.

shared_ptr<SX> sp1( new SX );
shared_ptr<SX> sp2( sp1 );

作成したSXその後、正常に削除される場合のみ全ての共通のポインタでが破壊されることになります。

フレキシビリティまたは有効なもののどちらがいいでしょうか?中央の特徴 shared_ptr は参照カウントには、転覆させます。のdeleter(第のコンストラクタ引数)がありますのでご利用 shared_ptr 資源その他その後平野のポインタ.でご利用いただけますと、ファイル。g:


typedef boost::shared_ptr FilePtr;
void FileClose( FILE* pf ) { if ( pf ) fclose( pf ); }
FilePtr pfile( fopen( "filename" ), FileClose );

同データベース接続のソケット等など。や Rau-α( します。

楽しみがさらに広がるでしょう方向を解決で shared_from_this.こちらの コード.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top