从非模板基类派生的模板类:无法访问基类变量?

Haa*_*hii 2 c++ inheritance templates

我有以下类结构:

class Base {
public:
    std::set<Index> openIndices;
    Base() {};
};


template<typename lhs_t, typename rhs_t>
class Derived : public Base {
public:
    lhs_t &lhs;
    rhs_t &rhs;

    Derived(lhs_t &_lhs, rhs_t &_rhs) : 
            Base(), 
            lhs(_lhs),
            rhs(_rhs),
            openIndices(std::set_symmetric_difference(lhs.openIndices, rhs.openIndices)) 
    {
    }
};
Run Code Online (Sandbox Code Playgroud)

所以基本上是Derived从基类派生的模板类Base.当访问成员变量ob baser类时,我收到以下错误:

test.h:34:88: error: class ‘Derived<lhs_t, rhs_t>’ does not have any field named ‘openIndices’
Run Code Online (Sandbox Code Playgroud)

我知道这个问题:如果我的类是从模板类派生的,我无法访问成员变量.但在我的情况下,我不是从模板类派生的,仍然无法访问成员变量.谁能告诉我为什么?

Seb*_*ann 6

您无法初始化基类的成员变量.您必须在基类中提供适当的构造函数并调用此构造函数.