在具有多个实例的成员上调用方法的语法
syntax for calling a method on a member with multiple instances
我是以下情况
template<typename T>
class base{
public:
void test(){}
};
template<typename T>
class helper{
public:
base<T> t;
};
template<typename T, typename ... Ts>
class holder: public helper<T>, helper<Ts>... {
};
int main(int argc, char *argv[]){
holder<int, short, long> h;
h.t.test(); // of course, error here
}
编译直到我尝试引用 holder<...>
的模棱两可的 t
。引用特定继承 helper
之一的 t
的语法是什么?
P.S.
老实说,我不知道如何给这个问题起标题。如果有人可以编辑它,那将是一个很大的帮助。
只需像往常一样使用 class 名称限定符:
h.helper<int>::t.test();
确实,这是一种奇怪的语法,但它与写作没有什么不同
foo.Base::member
从派生的 class 实例访问隐藏的基础 class 成员。
我是以下情况
template<typename T>
class base{
public:
void test(){}
};
template<typename T>
class helper{
public:
base<T> t;
};
template<typename T, typename ... Ts>
class holder: public helper<T>, helper<Ts>... {
};
int main(int argc, char *argv[]){
holder<int, short, long> h;
h.t.test(); // of course, error here
}
编译直到我尝试引用 holder<...>
的模棱两可的 t
。引用特定继承 helper
之一的 t
的语法是什么?
P.S.
老实说,我不知道如何给这个问题起标题。如果有人可以编辑它,那将是一个很大的帮助。
只需像往常一样使用 class 名称限定符:
h.helper<int>::t.test();
确实,这是一种奇怪的语法,但它与写作没有什么不同
foo.Base::member
从派生的 class 实例访问隐藏的基础 class 成员。