• <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>

            牽著老婆滿街逛

            嚴以律己,寬以待人. 三思而后行.
            GMail/GTalk: yanglinbo#google.com;
            MSN/Email: tx7do#yahoo.com.cn;
            QQ: 3 0 3 3 9 6 9 2 0 .

            愚蠢的錯誤:關于C2533錯誤

            Edit(2007/4/17):很抱歉的咒罵了VC編譯器,其實只是自己的問題,特此修訂一下這個日志,還讓那么人看了,我想應該訂正一下才好.在此表示抱歉了.

            今天寫了一個類,頭文件聲明如下:
            class CConfigManager
            {

            public:
                CConfigManager(
            void);
                
            ~CConfigManager(void);
            }
            結果編譯器給我報錯:

            error C2533: CConfigManager::CConfigManager' : constructors not allowed a return type

            我查了下MSDN,MSDN上面說:
            編譯器錯誤 C2533 
             
             語言篩選器: 全部 語言篩選器: 多個 語言篩選器: Visual Basic 語言篩選器: C# 語言篩選器: C++ 語言篩選器: J# 語言篩選器: JScript 
             Visual Basic(聲明)
             Visual Basic(用法)
             C#
             C++
             J#
             JScript

            錯誤消息
            “identifier”: 構造函數不允許返回類型


            構造函數不能有返回類型(甚至不能有 void 返回類型)。

            下面的示例生成 C2533:

            // C2533.cpp
            // compile with: /c
            class X {
            public:
               X();  
            };

            int X::X() {}   // C2533
            X::X(){}   // OK

            我當時沒有弄明白.實質上編譯器的角度來看這是正確的.
            當頭文件被include以后,也就和cpp文件合成一個文件了,
            這個時候就是這種情況了:

            class CConfigManager 

            public
            CConfigManager(
            void); 
            ~CConfigManager(void); 
            }
             

            CConfigManager::CConfigManager() 
            {
            }


             

            這個時候,實際上就像這樣了:

            class CConfigManager{} CConfigManager::CConfigManager()
            {}

             

            也就是說我這個時候定義了一個類型,并且它是構造函數的返回值類型.編譯器告訴我說:

            constructors not allowed a return type構造函數不允許返回一個類型.
            構造函數是沒有返回值類型的....

            只是我當時粗心大意,和理解的問題造成這個日志的.
            現在特別修改了它,希望其他碰到此類問題的朋友有一些深刻的意義.
            我有什么不對之處,也請各位不吝賜教,批評指正.

            posted on 2006-10-12 17:03 楊粼波 閱讀(2621) 評論(9)  編輯 收藏 引用 所屬分類: 原創文章C++

            評論

            # re: 愚蠢的錯誤,愚蠢的VC編譯器:關于C2533錯誤 2006-10-12 23:51 wlw

            用VA小助手可以避免類似問題  回復  更多評論   

            # re: 愚蠢的錯誤,愚蠢的VC編譯器:關于C2533錯誤 2006-10-13 05:40 happia

            編譯器經常會這樣子的,還是盡量避免這些低級錯誤的好  回復  更多評論   

            # re: 愚蠢的錯誤,愚蠢的VC編譯器:關于C2533錯誤 2006-10-13 13:59 Pixar

            編譯器一點都沒錯,看下c++標準去吧  回復  更多評論   

            # re: 愚蠢的錯誤,愚蠢的VC編譯器:關于C2533錯誤 2006-10-13 22:00 tx7do

            怎么不是編譯器錯誤,本來是這里出錯,結果編譯器說是那邊出錯了,這個不正確指明,難道還需要靠這樣的經驗來作用?那真是笑話了.

            PS:VA不好使,每次啟動都要解析整個工程,太討厭了.  回復  更多評論   

            # re: 愚蠢的錯誤,愚蠢的VC編譯器:關于C2533錯誤 2006-10-14 18:59 syy

            說句實話,這個錯誤低級了些,少寫分號的話絕對是初學者才會犯的問題。  回復  更多評論   

            # re: 愚蠢的錯誤,愚蠢的VC編譯器:關于C2533錯誤 2006-10-16 12:00 tx7do

            呵呵,是很丟人。
            最近經常犯低級錯誤。
            不過也好,
            長見識了。  回復  更多評論   

            # re: 愚蠢的錯誤,愚蠢的VC編譯器:關于C2533錯誤 2007-01-16 23:10 yy

            我看到第一個源碼,就知道錯誤是什么了,因為我也犯過。。。  回復  更多評論   

            # re: 愚蠢的錯誤,愚蠢的VC編譯器:關于C2533錯誤 2007-04-17 15:15 faye wong

            編譯器沒有錯,編譯器已經給你指明了錯誤
            如果沒有;
            class CConfigManager將成為這個下面一個函式的類型。

            例如:
            struct xx
            {
            }//注意這里沒有加;

            main()
            {
            }

            這將把函式main的類型定義為struct xx,很顯然,你的本意并不是如此。
            所以你錯怪編譯器了,仔細看看c/c++基礎吧。
            :)   回復  更多評論   

            # re: 愚蠢的錯誤,愚蠢的VC編譯器:關于C2533錯誤 2007-04-17 22:01 隨意

            這都是多久前的事情了.
            我當時學C++3個月都不到.
            樓上所說也不夠準確,xx被解析為main的返回值類型了.
            但是確實是的.
            xx變成了 main的返回值了.

            我那里inlude以后,
            也就是這樣了:

            class CConfigManager
            {

            public:
            CConfigManager(void);
            ~CConfigManager(void);
            }

            CConfigManager::CConfigManager()
            {}

            也就是說,我定義了一個類型 CConfigManager,并且它為構造函數的返回值的類型了.
            故而會報錯:說constructors not allowed a return type.
            當時沒有經驗,
            其實編譯器也只能做到這么多.
            沒有分號,編譯器以為這一行還沒有結束,于是向下解析找到了構造函數,
            它便將之解析成構造函數的返回類型了.  回復  更多評論   

            国产精品久久久久影院色| 综合网日日天干夜夜久久| 久久国产精品-国产精品| 精品国产综合区久久久久久| 综合久久给合久久狠狠狠97色| 国产精品久久久香蕉| 亚洲欧美日韩精品久久| 区久久AAA片69亚洲 | 欧美色综合久久久久久| 97精品依人久久久大香线蕉97| 香港aa三级久久三级| 伊人久久久AV老熟妇色| 久久久久国产精品三级网| 97精品国产91久久久久久| 精品久久久中文字幕人妻| 热RE99久久精品国产66热| 国产亚洲精品美女久久久| 久久免费视频1| 欧美无乱码久久久免费午夜一区二区三区中文字幕| 亚洲精品乱码久久久久久| 婷婷久久综合九色综合绿巨人| 久久精品国产精品国产精品污| 久久久久亚洲精品天堂| 国产欧美久久久精品影院| 亚洲欧美久久久久9999| 久久久久综合中文字幕| 99久久国产综合精品麻豆| 久久精品水蜜桃av综合天堂 | 国内精品久久久久久久久电影网 | 久久人人爽人人爽人人av东京热| 中文精品久久久久国产网址| 国内精品久久久久久久97牛牛| 97香蕉久久夜色精品国产| 欧美午夜A∨大片久久| 青青久久精品国产免费看| 亚洲精品乱码久久久久久蜜桃| 久久婷婷五月综合成人D啪| 久久AⅤ人妻少妇嫩草影院| 久久久国产精品| 综合久久久久久中文字幕亚洲国产国产综合一区首 | 久久se这里只有精品|