Posted on 2008-03-02 07:10
Wang Jinbo 閱讀(3659)
評(píng)論(8) 編輯 收藏 引用 所屬分類(lèi):
C++
GCC編譯器似乎不能理解繼承自模板類(lèi)里的數(shù)據(jù)成員。我還以為是代碼的問(wèn)題,郁悶了半天后,居然在Borland C++ 5.5下編譯通過(guò)了。節(jié)省篇幅,我抽出主要部分。
template<class T>
class A{
protected:
T id;
};
template<class T>
class B: public A<T>{
public:
void setid(T i){
id=i;
}
void test1(){
cout<<"B::test1() ID: "<<id<<endl;
}
};
B類(lèi)的id本應(yīng)該是從A類(lèi)里繼承來(lái)的,但用GCC編譯會(huì)提示說(shuō)變量id未定義。試著用Borland的編譯器就很痛快地過(guò)了。我使用的是MinGW的
GCC 3.4,但我在Unix-Center的機(jī)器上使用Unix和Linux版本的GCC 4.0編譯仍然通不過(guò),但Solaris上的Sun
Studio的C++編譯器則沒(méi)問(wèn)題。
難道就這么幸運(yùn)地碰上GCC的Bug了?