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インターフェイスをyourptr1つに書き直して、保持する必要のある機能を委任するのはあなた次第です。
于 2012-07-23T08:58:43.757 に答える