プライベート変数をコード内のSTLクラスに追加する方法はありますか?たとえば、 "std :: list"のインスタンスに追加の変数が付加されるようにします。あるいは、自分のリストを一から作る必要がありますか?プライベート変数をC++ stlクラスに追加
1
A
答えて
3
場合によっては、はい。たとえば、std :: istreamとstd :: ostreamには、xalloc()
というめったに使用されない特別なメソッドがあり、long
またはvoid*
のメンバーをそれらのクラスのすべてのインスタンスに1つ以上追加できます。
しかし、それは典型的ではありません。 std :: listのようなコンテナクラスの場合、カスタムデータを格納するための「スロット」を追加するようなメンバフックはありません。
しかし、コンテナクラスには、アロケータのオプションのテンプレート引数があります。各コンテナにはアロケータがあり、デフォルトではステートレスで、new
とdelete
を使用して要素を割り当てます。 C++ 11以降では、これらのアロケータは「ステートフル」になります。つまり、new
とdelete
を使用して独自のアロケータを作成できますが、任意の余分なデータも格納できます。
必要な状態のアロケータを作成したら、それを取得することができます。 get_allocator()
を使用してリストから削除します。
+0
アロケータの使用はスマートなトリックです。どうも。 – YSC
関連する問題
- 1. クラスのプライベート変数にアクセスするC++
- 2. publicにC++クラスのプライベート変数を変換する
- 3. 継承とプライベート変数C++
- 4. C++プライベート変数スコープ規則
- 5. stl C++:クラス内のクラス
- 6. 元の.hまたは.mファイルを変更せずにクラスにプライベート変数を追加する方法
- 7. C#とVBクラスのプライベート変数の命名規則と "_"文字
- 8. エンティティクラスのパブリックアクセサのプライベート変数。 c#
- 9. C#の部分クラスの変更/追加
- 10. クラスのC++ STLセット - コンパイラエラーエラーC2664
- 11. プライベート変数とクラスのローカル参照は
- 12. Javaの別のクラスからプライベートTextAreaに追加する
- 13. プライベート変数が
- 14. C++ STL; STLコンテナを含むクラスを反復するか?
- 15. Cプライベート変数GetとSetメソッド
- 16. C++でSTLクラスを反復する11
- 17. mixinクラスを継承するクラスにクラス変数を動的に追加する
- 18. スカラ追加クラスをクラスに追加
- 19. tolua ++:LuaにエクスポートされたC++クラスにlua関数を追加
- 20. C#互いにクラスを追加する
- 21. cプライベート変数アクセス中に2248エラーが発生しました
- 22. PHPクラスをプライベート変数に設定する
- 23. バックボーンビューへのプライベート変数とパブリック変数
- 24. LESS変数にLESSクラスを追加するには?
- 25. cでcsvの変数に整数を追加する方法
- 26. プライベート変数へのアクセス
- 27. コンパニオンオブジェクトがクラスのプライベート変数にアクセスできない
- 28. STLクラスのイテレーター関数をコーディング
- 29. CSSクラスまたはスパンを.js変数に追加する
- 30. クラスのメンバー変数をマップに追加する
クラスを 'std :: list'から派生させてみませんか?一から自分自身を作ることは、通常、非常に悪い考えです。 – tadman
@tadman 'private'lyを忘れないでください。 – LogicStuff
[XY問題](http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)のように聞こえる - 実際に*達成しようとしていることは何ですか? –