1

SQL データベースのラッパーを作成していますが、返されるオブジェクトはshared_ptr.
配列型のアクセスをサポートしたいと思います (つまりrow["column"]、 の代わりにrow->get("column"))。格納されているオブジェクトはshared_ptr配列型アクセスをサポートしていますが、もちろんサポートしてshared_ptrいません。クラスを拡張する必要がありますか
?shared_ptrs

4

1 に答える 1

2

最も明白なことは、にを追加するoperator[]ことshared_ptrです。つまり、std :: shared_ptrを再利用し、[]演算子を希望どおりに機能させる、独自のshared_ptrを定義します。

これは、shared_ptrを導出することにより、迅速かつ汚い方法で実行できます(注:shared_ptrはポリモーフィックオブジェクトではないため、同じコンテキストでstd ::とyoursを混同しないでください。そうすれば、それらのインターフェイスを再利用できます)。

「デストラクタが仮想でない場合は派生しない」ファンの場合は、std :: shared_ptrをに埋め込みyourptr、shared_ptrインターフェイスをyourptr1つに書き直して、保持する必要のある機能を委任するのはあなた次第です。

于 2012-07-23T08:58:43.757 に答える