2014-02-13 166 views
2

我有下面的類結構:從非模板基類派生的模板類:無法訪問基類變量?

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)) 
    { 
    } 
}; 

所以basicly從基類Base來源的模板類Derived。當訪問成員變量OB貝塞類我得到以下錯誤:

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

我知道this question:我不能訪問的情況下,成員變量我的類是從模板類派生。但在我的情況下,我不是從模板類派生的,我仍然無法訪問成員變量。有誰能告訴我爲什麼?

回答

5

你不能初始化基類的成員變量。您必須在基類中提供適當的構造函數並調用此構造函數。

+0

Omg,是的,我應該知道這個!很顯然,我真的被代碼中的模板搞糊塗了。不管怎麼說,還是要謝謝你。 – Haatschii

相關問題