タイトルは少し誤解を招くかもしれません。次の問題があります。葉と内部ノードで構成されるツリーがあります。ユーザーは葉に任意の情報を保存できる必要があり、ツリーにはユーザー定義の値のセットを取得し、対応する葉に一定時間 (償却されない) でアクセスする必要があるいくつかのメソッドがあります。
次のアイデアを思いつきましたが、残念ながらネストされたクラスのプライベートメンバーにアクセスできないため、機能しません。ユーザーはツリーを作成し、リーフごとUserElement
に、対応するリーフの user_defined 値を含むインスタンスを作成します。doSomethingWithTheTree(list>) のようなメソッドが呼び出されてツリーが構築されると、ツリーは対応するリーフを作成し、プライベート フィールドに保存しますleaf
。ユーザーが user_defined 値に対応するいくつかのリーフを使用してメソッドを呼び出したいときはいつでも、対応するUserElement
s を指定してメソッドを呼び出すだけで、ツリーは対応するリーフを一定時間で取得できます。
class Tree {
public:
template <typename T>
class UserElement {
private:
T user_value;
tree_node* leaf; // this has to be private for
// everyone outside the class `Tree`
public:
T getInf() {
return user_value;
}
void setInf(T i) {
user_value = i;
}
};
void doSomethingWithTheTree(list<UserElement<T>> elements) {
...
// I want to be able to access elem.leaf for all elements
}
}