以下代码未编译。
我想要
Derived<T>
访问
m_vec
的成员
Base
。但是,因为
派生<T>
是模板化的,它通过
: public Base<Derived<T>>
和
m_vec
不可见。
如果我改变
派生<T>
只是
Derived
,
m_vec
变得可见。
为什么会这样/有变通办法吗?
#include <vector>
template<class SUB_CLASS>
struct Base
{
Base(int config){}
std::vector<std::string> m_vec;
};
template<class T>
struct Derived : public Base<Derived<T>>
{
Derived(int config) : Base<Derived<T>>(config){}
void start()
{
m_vec.clear(); // This line doesn't compile. m_vec is not accessible
}
};
int main()
{
int config = 0;
Derived<int> d(config);
d.start();
return 0;
}