未解決的錯誤,我需要幫助搞清楚什麼錯了代碼:LNK2019:在singletone
class DatabaseEngine
{
protected:
DatabaseEngine();
static DatabaseEngine* m_DatabaseEngine;
public:
static DatabaseEngine& instance();
void do_something();
};
CPP:
#include "databaseengine.h"
DatabaseEngine* DatabaseEngine::m_DatabaseEngine=nullptr;
DatabaseEngine::DatabaseEngine()
{
}
static DatabaseEngine& DatabaseEngine:: instance()
{
if(m_DatabaseEngine==nullptr)
{
m_DatabaseEngine=new DatabaseEngine;`enter code here`
}
return *m_DatabaseEngine;
}
void DatabaseEngine::do_something()
{
}
userwindow.cpp:
#include "databaseengine.h"
UsersWindow::UsersWindow(QWidget *parent) :
QWidget(parent),
ui(new Ui::UsersWindow)
{
ui->setupUi(this);
DatabaseEngine::instance().do_something();
}
UsersWindow::~UsersWindow()
{
delete ui;
}
userswindow。 obj:-1:錯誤:LNK2019:無法解析的外部符號「public:static class DatabaseEngine & __cdecl DatabaseEngine (?0UsersWindow @@ QAE @ PAVQWidget @@@ Z)
在函數「public:__thiscall UsersWindow :: UsersWindow(class QWidget *)」中引用的「:: instance(void)」(?instance @ DatabaseEngine @@ SAAAV1 @ XZ)在函數「public:__thiscall UsersWindow :: UsersWindow」中引用的無效外部符號「public:void __thiscall DatabaseEngine :: do_something(void)」(?do_something @ DatabaseEngine @@ QAEXXZ)userswindow.obj:-1:error:LNK2019: (類QWidget的*)」(?? 0UsersWindow @@ QAE @ PAVQWidget @@@ Z)
感謝
對我來說,它看起來像DatabaseEngine的cpp文件不包含在項目中,因此Visual Studio不編譯該代碼。 – drescherjm
順便說一句,我認爲這是兩個答案都提到的錯誤的原因之一。我看到你的.cpp文件無法編譯。所以,如果你沒有錯誤,你要麼發佈了錯誤的代碼,要麼這個文件不是你的項目的一部分。 – drescherjm