【发布时间】:2015-01-22 14:39:26
【问题描述】:
我有一个社区已经知道的问题(可以找到最完整的答案之一here),但我想知道是否有办法让编译器了解您想要访问 base无需使用typedef 或this 的模板成员如下:
#include <iostream>
template<typename T>
struct Base{
T a;
T a2;
};
template<typename T1, typename T2>
struct Derived : Base<T2>{
T2 b;
void member_fnc();
};
template<typename T1, typename T2>
void Derived<T1,T2>::member_fnc(){
typedef Base<T2> base;
std::cout << "a = " << base::a << std::endl; // or this->a;
std::cout << "a2 = " << base::a2 << std::endl; // or this->a2;
std::cout << "b = " << b << std::endl;
}
int main(){
Derived<int,double> der1;
der1.a = 1;
der1.a2 = 2;
der1.b = 1.1;
der1.member_fnc();
}
我有这种感觉,应该有一种方法可以说编译器要访问基本模板 Base<T2>,而不必为要访问的每个成员键入它或包含 using,因为您可以使用 @ 取消嵌套命名空间987654327@关键字,但我目前找不到。有可能吗?
【问题讨论】:
标签: c++ templates inheritance