我正在尝试创建我的STL课程,但是我遇到了一些困难。 我想写一个由另外两个类继承的父类。父类可以从模板参数中获取子类的类型。就像下面的示例代码一样。
当我用VS2013编译我的代码时,我得到了一些编译错误,C4430,C2868,C2602,C2146,C2039。
template<class Child>
class Base
{
public:
typedef typename Child::value_type value_type;
};
class Child_A : public Base<Child_A>
{
typedef double value_type;
};
class Child_B : public Base<Child_B>
{
typedef float value_type;
};
int main(){
Child_A ch_a;
Child_B ch_b;
}
我知道让它工作的一种方法是将child的value_type放入父模板字段中,但我不喜欢这样做。它会使我的代码有点复杂。
还有其他方法可以解决这个问题吗?
错误列表:
C2039:'value_type':不是'Child_A'的成员
C2602:'Base :: value_type'不是'Base'基类的成员
C2868:'Base :: value_type':using-declaration的非法语法;预期的合格名称