继承模板类

先看如下代码(参看effective 条款43)

template <typename T>
class B{
public:
    T t;
    void show()
    {
    }
    
};

template <typename T>
class D :public B<T>
{
public:
    void show1()
    {
        show();//这里报错
    }
};

上面直接调用show会报错。原因在于D继承B 的时候并不确定B的具体样子,因为B带有一个待定类型T。

只能通过如下方法调用:

1 this->show(); //假设show被继承

2 using A<int>::show; //告诉编译器,请它假设show位于B<int>内

    show();

3 A<int>::show(); //指定A<int>的show

你可能感兴趣的:(继承模板类)