从模板类继承模板

时间:2021-02-05 13:13:38

标签: c++

我想知道是否可以使用模板类进行继承。我一直在寻找谷歌和这里。有人说不,有人说是(例如 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 派生,则它可以工作。但我真的想要更一般的东西......

有可能吗?

0 个答案:

没有答案