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はそれをコンパイルすることはできません。なぜなら、テンプレートを扱うのに2回使用するからです。 VCまたはBCBは未知のテンプレート名を気にしません。 gccのこの機能を抑制する方法はありますか?ありがとうございました! http://pages.cs.wisc.edu/~driscoll/typename.htmlgccテンプレートの継承問題
なぜfuncに 'this->'を使わないのですか?もう一方は 'struct TBase :: TItem'でなければなりません –
mathk