对于我的异常类,我有一个具有多个参数(…)的构造函数,它在windows下工作得很好,但是在linux下它编译得很好,但是拒绝链接到它。
为什么这在Linux下不起作用?
下面是一个例子:
class gcException
{
public:
gcException()
{
//code here
}
gcException(uint32 errId, const char* format = NULL, ...)
{
//code here
}
}
enum
{
ERR_BADCURLHANDLE,
};
是的。
编辑
所以当我这样称呼它时:
if(!m_pCurlHandle)
throw gcException(ERR_BADCURLHANDLE);
我得到这个编译错误:
error: no matching function for call to ‘gcException::gcException(gcException)’
candidates are: gcException::gcException(const gcException*)
gcException::gcException(gcException*)
gcException::gcException(gcException&)
最佳答案
它编译和链接都很好。我把你的测试代码扩展到一个完整的“程序”:
class gcException {
public:
gcException() { }
gcException(int errId, const char* format, ...) { }
};
int main() { new gcException(1, "foo", "bar", "baz"); }
然后
g++ -Wall test.cpp
运行没有错误。根据g++ -v
,我有gcc版本4.3.2(debian 4.3.2-1.1)。我的快速示例是否为您编译?(您是否意外地使用gcc而不是g++编译或链接了gcc?)