Posted on 2008-03-02 07:10
Wang Jinbo 閱讀(3657)
評論(8) 編輯 收藏 引用 所屬分類:
C++
GCC編譯器似乎不能理解繼承自模板類里的數據成員。我還以為是代碼的問題,郁悶了半天后,居然在Borland C++ 5.5下編譯通過了。節(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類的id本應該是從A類里繼承來的,但用GCC編譯會提示說變量id未定義。試著用Borland的編譯器就很痛快地過了。我使用的是MinGW的
GCC 3.4,但我在Unix-Center的機器上使用Unix和Linux版本的GCC 4.0編譯仍然通不過,但Solaris上的Sun
Studio的C++編譯器則沒問題。
難道就這么幸運地碰上GCC的Bug了?