d****b 发帖数: 25 | 1 假设有一个模版tree class
template
{
private:
struct node
{
T elem;
node left;
node right;
}
node * head;
public:
typename tree::node * traversal( node * p, const T & e);
......................
};
这个traversal函数返回一个node 指针, 为什么前边必须要定义为 typename tree:
多谢! |
X****r 发帖数: 3557 | 2 对于tree::node来说,由于tree这个模版类还没有实例化,
编译器并不知道tree::node是一个变量还是一个类型,所以你需
要用typename来告诉编译器这是一个类型。而如果不是写tree::node
而是直接写node,编译器就自动查找到当前范围里的node这个名字,
知道这是个类型了。
【在 d****b 的大作中提到】 : 假设有一个模版tree class : template : { : private: : struct node : { : T elem; : node left; : node right; : }
|
z****e 发帖数: 2024 | 3 红猪侠新年好。
【在 X****r 的大作中提到】 : 对于tree::node来说,由于tree这个模版类还没有实例化, : 编译器并不知道tree::node是一个变量还是一个类型,所以你需 : 要用typename来告诉编译器这是一个类型。而如果不是写tree::node : 而是直接写node,编译器就自动查找到当前范围里的node这个名字, : 知道这是个类型了。
|