在Meyer的Singleton模式中对getInstance()的未定义引用

时间:2019-03-27 17:45:42

标签: c++ singleton qmake undefined-reference

即使函数声明和定义相同,我仍未获得对getInstance()的未定义引用。

虽然这是一个链接问题,但.h和cpp文件似乎已添加到QT中的.pro文件中

我的.h文件:

class ErrorStruct
{
public:
    ErrorStruct(ErrorStruct const&)= delete;
    ErrorStruct& operator=(ErrorStruct const&) = delete;
    static ErrorStruct& getInstance(bool mode);
    void setError(std::string errorMessage, bool critical);
 private:
    ErrorStruct() {}
    ~ErrorStruct() {}
    bool _abortMode;
    bool _isCritical;
    std::string _criticalError;
    std::vector<std::string> _errorStack;
};

my .cpp file:
ErrorStruct& ErrorStruct::getInstance(bool mode){
    static ErrorStruct instance;
    instance._abortMode=mode;
    return instance;
}
void ErrorStruct::setError(std::string errorMessage, bool critical){
    /*always push the error to the errorStack
     * only save the first critical error when abort mode is on*/
    _errorStack.push_back(errorMessage);
    if (critical && _abortMode && !_isCritical){
        _criticalError=errorMessage;
        _isCritical=true;
    }
}

这就是我尝试使用它的方式:

 ErrorStruct& c = ErrorStruct::getInstance(true);
 c.setError("bbb",true);

0 个答案:

没有答案