模板类中无法访问的受保护成员

时间:2017-01-31 14:38:46

标签: c++ templates inheritance

我正在尝试编写一些非常通用的代码,并在处理模板类时遇到继承问题。这是代码:

template <typename T>
class Base
{
public:
    Base(int i, T t):m_i(i),m_t(t){}
    virtual ~Base(){}
protected:
    int m_i;
    T m_t;
};

template <typename T>
class Derived : public Base<T>
{
public:
    Derived(int i, T t):Base<T>(i,t){}
    ~Derived(){}
    void print() { cout << m_i << " " << m_t << endl;}
};

int main()
{
    Derived<double> d(1,2.4);
    d.print();
}

对我来说令人惊讶的是它没有编译,因为'm_i'和'm_t'没有在这个范围内声明。在模板类的情况下,继承规则是否无效?有没有办法绕过这个问题?

0 个答案:

没有答案