对于我的异常类,我有一个具有多个参数(…)的构造函数,它在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?)

10-06 10:31