• <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.
            當時沒有經驗,
            其實編譯器也只能做到這么多.
            沒有分號,編譯器以為這一行還沒有結束,于是向下解析找到了構造函數,
            它便將之解析成構造函數的返回類型了.  回復  更多評論   

            久久精品桃花综合| 色婷婷综合久久久久中文字幕| 久久久久亚洲AV综合波多野结衣| 久久精品一区二区三区中文字幕 | 亚洲精品无码久久千人斩| 欧美亚洲国产精品久久| 亚洲人成精品久久久久| 99久久免费只有精品国产| 国产精品中文久久久久久久 | 久久婷婷色综合一区二区| 精品久久久久久中文字幕大豆网| 国产精品欧美久久久天天影视| 国产精品日韩欧美久久综合| 一本久久a久久精品vr综合| 久久成人永久免费播放| 一本久久a久久精品vr综合| 久久精品国产亚洲av瑜伽| 久久精品无码专区免费青青| 亚洲国产视频久久| 国产成人香蕉久久久久| 国产人久久人人人人爽| 久久精品视频一| 看全色黄大色大片免费久久久 | 日本久久久精品中文字幕| 久久国产欧美日韩精品| 欧美成人免费观看久久| 狠狠人妻久久久久久综合蜜桃| 久久精品国产亚洲AV香蕉| 亚洲日韩中文无码久久| 久久久国产99久久国产一| 欧美亚洲日本久久精品| 午夜精品久久久久久久无码| 国产精品亚洲美女久久久| 国产精品伊人久久伊人电影 | 中文成人无码精品久久久不卡| 久久免费美女视频| 国产AV影片久久久久久| 国产精品成人99久久久久| 国产69精品久久久久99尤物| 狠狠色伊人久久精品综合网| 久久精品人妻一区二区三区|