标题可能有点误导。我有以下问题:我有一棵由叶子和内部节点组成的树。用户应该能够在叶子中存储任何信息,并且树有一些方法可以获取一组用户定义的值,并且需要在恒定时间内访问相应的叶子(未摊销)。
我想出了以下想法,但它不起作用,因为不幸的是我无法访问嵌套类的私有成员:用户创建树,并为每个叶子创建一个实例,UserElement
其中包含相应叶子的 user_defined 值。一旦调用了 doSomethingWithTheTree(list>) 之类的方法并构建了树,树就会创建相应的叶子并将其保存在私有字段中leaf
。每当用户想要调用一个方法,其中一些叶子对应于其用户定义的值时,他/她只需通过给出相应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
}
}