【发布时间】:2015-03-12 16:14:55
【问题描述】:
我想从模板类型Base 派生一个类型Test,我专门研究派生类型(即Base<Test>)。
在模板化类型中,我想使用派生类型(模板参数)中定义的 typedef。
但是,我得到这个编译错误:
error C2039: 'X' : is not a member of 'Test'
这里是sn-p的代码:
template <typename T>
class Base
{
protected:
void func(typename T::X x) {}
};
class Test : public Base<Test>
{
public:
typedef int X;
};
这可行吗?如果可行,我需要解决什么问题?
(我看到了针对此类问题的几个答案,但看起来我的场景并没有通过为 typename 加上前缀来解决 - 这与从专用于派生类型的模板派生有关吗?)
【问题讨论】: