【发布时间】:2011-01-28 23:33:29
【问题描述】:
template<class T>
class TBase
{
public:
typedef int Int;
struct TItem
{
T Data;
};
int value;
};
template<class T>
class TClass:public TBase<T>
{
public:
TBase<T>::TItem item; // error here. only when using type defined in base class.
void func()
{
TBase<T>::value ++; // no error here!
}
};
int main(int argc, char *argv[])
{
TClass<int> obj;
return 0;
}
在 VC 和 Borland C++ 编译器中,它们都可以编译它。但是 gcc 无法编译它,因为它使用两次来处理模板的事情。 VC 或 BCB 不关心未知的模板名称。有没有办法抑制 gcc 的这个功能?谢谢!
【问题讨论】:
-
为什么不使用
this->来实现功能。另一个应该是struct TBase<T>::TItem
标签: templates gcc g++ inheritance