【发布时间】:2016-12-02 21:17:25
【问题描述】:
我有我的结构字典
template<typename T, typename U>
struct Diccionary {
friend void insert<T, U>(Diccionario<T,U>& d, const T& c, const U& v);
friend void insertAux<T, U>(typename Diccionary<T,U>::Nodo* a, const T& c, const U& v);
private:
struct Nodo{
T t;
U u;
Nodo* left;
Nodo* right;
};
Nodo* root;
Nodo* iterator;
int size;
};
insertAux 的参数有一个错误,我不知道如何给这个函数一个指向节点的指针。问题是节点在结构中,所以编译器告诉我:
错误:‘struct Diccionario’中没有名为‘Nodo’的类型
我需要给这个函数一个节点,因为那样我将使用递归算法,我不能给函数一个字典类型,因为树和字典是不同的。
【问题讨论】:
-
将类型定义放在好友声明之前。
-
Diccionario的定义是什么? -
但问题是 te 类型必须是私有的,de insertAux 函数也是私有的,但我已经把它放在那里了。所以如果类型仍然是私有的,我能做什么?类型是私有的,但函数(是私有的)必须是朋友
-
你的类定义中可以有多个
private部分。
标签: c++ templates dictionary struct tree