c ++模板typename继承

时间:2016-08-01 14:17:54

标签: c++ templates inheritance

我正在尝试创建我的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的非法语法;预期的合格名称

0 个答案:

没有答案