這段代碼產生的GNU編譯器錯誤:是否有模板基類繼承的另一個解決方法?
class A
{
public:
int X;
};
template<class T>
class Foo : public T
{
public:
void doStuff();
};
template<class T>
void Foo<T>::doStuff()
{
X++;
}
已經有an answer爲什麼這是一個錯誤。我想知道是否有另一種解決此錯誤的方法,而不是使用
T::X
每次我想引用X成員。我嘗試這樣做:
template<class T>
void Foo<T>::doStuff()
{
using T::X;
X++;
}
但GCC提供了一個錯誤:「一類的標準名稱是不允許的」
顯然你不能`在函數內部使用T :: X;`。你需要這樣做,如下所示:http://www.ideone.com/MI9fM ...查看我的答案其他選擇。他們不如此,但有時候意識到他們有幫助! – Nawaz 2011-02-11 21:42:16