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
至少人家提示了可能是少了一个分号。