我正在尝试编写一些非常通用的代码,并在处理模板类时遇到继承问题。这是代码:
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'没有在这个范围内声明。在模板类的情况下,继承规则是否无效?有没有办法绕过这个问题?