继承非模板基类的模板类:无法访问基类变量?

5
我有以下的类结构:
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)) 
    {
    }
};

基本上,一个模板类Derived从基类Base派生而来。访问基类的成员变量时,我得到以下错误:

test.h:34:88: error: class ‘Derived<lhs_t, rhs_t>’ does not have any field named ‘openIndices’

我知道这个问题:如果我的类是从一个模板类派生而来,我无法访问成员变量。但在我的情况下,我没有从模板类派生,仍然无法访问成员变量。有人能告诉我为什么吗?

1个回答

8

您不能初始化基类的成员变量。您必须在基类中提供适当的构造函数,并调用该构造函数。


1
哦,是啊,我应该知道这个的!显然,我被我的真实代码中的模板弄得太困惑了。不管怎样,还是谢谢你。 - Haatschii

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接