• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            posts - 5, comments - 40, trackbacks - 0, articles - 0

            GCC不能正確繼承模板類(lèi)?

            Posted on 2008-03-02 07:10 Wang Jinbo 閱讀(3667) 評(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了?

            Feedback

            # re: GCC不能正確繼承模板類(lèi)?  回復(fù)  更多評(píng)論   

            2008-03-02 09:22 by Santa
            你要是用到父類(lèi)變量需要加 this->
            或者在子類(lèi)聲明的時(shí)候標(biāo)明 using A;

            # re: GCC不能正確繼承模板類(lèi)?  回復(fù)  更多評(píng)論   

            2008-03-02 09:39 by 死循環(huán)ing...
            template<class T>
            class A{
            protected:
            T id;
            };
            template<class T>
            class B: public A<T>{
            public:
            void setid(T i){
            A<T>::id=i;
            }
            void test1(){
            cout<<"B::test1() ID: "<<A<T>::id<<endl;
            }
            };
            根據(jù)錯(cuò)誤提示,說(shuō)明未指定域,所以修改了一下,就通過(guò)了,原因不明(= =")
            GCC4.2.1-sjlj

            # re: GCC不能正確繼承模板類(lèi)?  回復(fù)  更多評(píng)論   

            2008-03-02 11:33 by 空明流轉(zhuǎn)
            這似乎是gcc編譯器本身的問(wèn)題。

            # re: GCC不能正確繼承模板類(lèi)?  回復(fù)  更多評(píng)論   

            2008-03-02 12:06 by stO
            G++做的是對(duì)的,你應(yīng)該回去好好看看C++標(biāo)準(zhǔn).
            同時(shí)你可以用-fpermissive放寬要求

            # re: GCC不能正確繼承模板類(lèi)?  回復(fù)  更多評(píng)論   

            2008-03-02 15:56 by 空明流轉(zhuǎn)
            @stO
            大部分編譯器的實(shí)現(xiàn)都是在初始化列表里滿(mǎn)足此項(xiàng)要求,而構(gòu)造函數(shù)體這一要求都放寬了,跟人覺(jué)得這一要求也確實(shí)沒(méi)有什么道理,因?yàn)樵谡{(diào)用子類(lèi)構(gòu)造函數(shù)的時(shí)候基類(lèi)都已經(jīng)構(gòu)造完畢了。標(biāo)準(zhǔn)也只是標(biāo)準(zhǔn)而已。

            # re: GCC不能正確繼承模板類(lèi)?  回復(fù)  更多評(píng)論   

            2008-03-03 13:48 by eXile
            這個(gè)設(shè)計(jì)到模板的兩次掃描機(jī)制,VC或BC的做法可以使編譯略微快一些,但是會(huì)對(duì)一些還沒(méi)有實(shí)例化的模板代碼中的語(yǔ)法錯(cuò)誤視而不見(jiàn),而GCC的做法更為穩(wěn)妥一些,也是符合標(biāo)準(zhǔn)的的行為。

            # re: GCC不能正確繼承模板類(lèi)?  回復(fù)  更多評(píng)論   

            2008-03-05 10:49 by zhiyong
            “對(duì)一些還沒(méi)有實(shí)例化的模板代碼中的語(yǔ)法錯(cuò)誤視而不見(jiàn)”
            是完全符合 C++ 標(biāo)準(zhǔn)的,而且這種特性還是有用的

            # re: GCC不能正確繼承模板類(lèi)?  回復(fù)  更多評(píng)論   

            2008-07-14 10:56 by ytj
            經(jīng)測(cè)試,用using a;A<T>::id;this->都可以解決問(wèn)題,不過(guò)G++的這個(gè)特性讓我很不爽。
            久久久久久久97| 无码国内精品久久人妻| 国产免费久久精品丫丫| 国内精品伊人久久久久av一坑| 久久久久人妻精品一区二区三区 | 久久美女人爽女人爽| 91久久精品91久久性色| 2021久久国自产拍精品| 久久久国产精品福利免费| 人人狠狠综合88综合久久| 午夜久久久久久禁播电影| 久久99国产一区二区三区| 丰满少妇人妻久久久久久| 一本色道久久88加勒比—综合| 无码八A片人妻少妇久久| 久久久精品免费国产四虎| 国产精品久久久久久久人人看| 欧美日韩中文字幕久久伊人| 久久精品国产乱子伦| 久久无码人妻精品一区二区三区| 久久影院综合精品| 精品久久久无码21p发布| 香蕉99久久国产综合精品宅男自 | 久久99精品国产99久久6| 精品伊人久久大线蕉色首页| 久久99久久成人免费播放| 99久久婷婷免费国产综合精品| 色妞色综合久久夜夜| 亚洲欧美精品一区久久中文字幕| 久久综合久久久| 久久精品国产99国产电影网| 久久综合香蕉国产蜜臀AV| 国产美女亚洲精品久久久综合| 欧美久久久久久午夜精品| 久久www免费人成看国产片| 国产精品九九久久免费视频 | 久久天天躁狠狠躁夜夜av浪潮 | 国产叼嘿久久精品久久| 好属妞这里只有精品久久| 2021久久国自产拍精品| 99久久国语露脸精品国产|