제목이 약간 오도 할 수도 있습니다. 나는 다음과 같은 문제가있다 : 나뭇잎과 내부 노드로 구성된 나무가있다. 사용자는 나뭇잎에 모든 정보를 저장할 수 있어야합니다. 및 트리는 사용자 정의 값 집합을 가지며 상수 시간 (상각되지 않음)으로 해당 잎에 액세스해야하는 몇 가지 메소드가 있습니다.C++ 중첩 클래스의 개인 멤버에 액세스
나는 다음과 같은 아이디어를 내놓았다하지만 불행히도 내가 중첩 된 클래스의 private 멤버에 액세스 할 수 있기 때문에 작동하지 않습니다 : 사용자는 트리 각 리프도에 대한 user_defined 값을 포함 UserElement
의 인스턴스 생성 해당 잎. doSomethingWithTheTree (list>)와 같은 메소드가 호출되고 트리가 작성되면 해당 트리가 해당 트리를 만들고 개인 필드 leaf
에 저장됩니다. 사용자가 user_defined 값에 해당하는 일부 잎을 가진 메소드를 호출하기를 원할 때마다, 사용자는 대응하는 UserElement
을 제공함으로써 메소드를 호출하기 만하면 트리는 상수 시간에 해당 잎을 검색 할 수 있습니다.
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
}
}
하위 클래스가 아닌 중첩 된 클래스입니다. 용어에주의하십시오. 질문의 의미가 많이 바뀝니다. – Manu343726