SQL データベースのラッパーを作成していますが、返されるオブジェクトはshared_ptr
.
配列型のアクセスをサポートしたいと思います (つまりrow["column"]
、 の代わりにrow->get("column")
)。格納されているオブジェクトはshared_ptr
配列型アクセスをサポートしていますが、もちろんサポートしてshared_ptr
いません。クラスを拡張する必要がありますか
?shared_ptrs
1 に答える
2
最も明白なことは、にを追加するoperator[]
ことshared_ptr
です。つまり、std :: shared_ptrを再利用し、[]演算子を希望どおりに機能させる、独自のshared_ptrを定義します。
これは、shared_ptrを導出することにより、迅速かつ汚い方法で実行できます(注:shared_ptrはポリモーフィックオブジェクトではないため、同じコンテキストでstd ::とyoursを混同しないでください。そうすれば、それらのインターフェイスを再利用できます)。
「デストラクタが仮想でない場合は派生しない」ファンの場合は、std :: shared_ptrをに埋め込みyourptr
、shared_ptrインターフェイスをyourptr
1つに書き直して、保持する必要のある機能を委任するのはあなた次第です。
于 2012-07-23T08:58:43.757 に答える