如果我使用像以下示例这样的继承链,我可以使用来自最深基础的 vars,而不会出现任何问题:
class A { public: int x; };
class B : public A { };
class C: public B { public: void Do() { cout << x << endl; } };
如果我对递归可变参数模板类做同样的事情,我将无法访问我的变量。知道如何访问变量以及为什么我看不到我的变量吗?
template <class ...Parms>
class Example;
template <class Head, class ...Parms>
class Example<Head, Parms...>: public Example<Parms...>
{
};
template <>
class Example<>
{
public:
int x;
};
template <class ...Parms>
class Last: public Example<Parms...>
{
void Do() { cout << x << endl; }
};
在实例化类的任何实例之前编译失败!