我想知道是否可以使用模板类进行继承。我一直在寻找谷歌和这里。有人说不,有人说是(例如 https://blog.feabhas.com/2014/06/template-inheritance/ 中的第一个数字)。但我不能让它工作。
我想做这样的事情:
class Base
{
public:
T m_Data;
T m_DataBase;
public:
Base() : m_DataBase(3.)
{
}
virtual void set(const T& val)
{
m_Data = val;
}
void print()
{
std::cout << m_Data << " " << m_DataBase << '\n';
}
};
template<typename T>
class Derived : public Base<T>
{
public:
Derived() : Base<T>()
{
}
virtual void set(const T& val) override
{
m_Data = val + 1;
}
};
int main()
{
Derived<double> derived;
derived.set(4.0);
derived.print();
std::cin.get();
}
这行不通。它在派生类中找不到 m_Data(和 m_DataBase)。如果我将 Derived 设为非模板,例如纯双,并使其从 Base
有可能吗?