error C2533

在VC2008中编译时出现了一个奇怪的出错信息:error C2533: 'testFilterManager::{ctor}' : constructors not allowed a return type,几经周折后终于找到了问题的原因——定义class时没有在最后加分号。也就是定义:

class testFilterManager{
public:

        testFilterManager();
       ~testFilterManager();
       //………
};    // if this “;”missed, the error c2533 happens

而msdn上是这样解释这个出错信息的:

Visual C++ 概念: 建置 C/C++ 程式

編譯器錯誤 C2533

錯誤訊息

'identifier' : 建構函式不允許傳回型別

建構函式不能有傳回型別 (即使是 void 傳回型別也不行)。

下列範例會產生 C2533:

複製程式碼

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

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

这个解释对解决这个错误可是一点帮助都没有。

gcc在这一点上做的就很不错:

testFilterManager.cpp:54: error: new types may not be defined in a return type
testFilterManager.cpp:54: note: (perhaps a semicolon is missing after the definition of \u2018VprocJazz2Manager\u2019)
testFilterManager.cpp:54: error: return type specification for constructor invalid

至少人家提示了可能是少了一个分号。

posted @ 2009-03-19 15:01  老猴的技术博客  阅读(2583)  评论(0编辑  收藏  举报