即使函数声明和定义相同,我仍未获得对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);