мне нужна помощь, чтобы выяснить, что не так об этом коде:LNK2019: неразрешенный ошибка в singletone
class DatabaseEngine
{
protected:
DatabaseEngine();
static DatabaseEngine* m_DatabaseEngine;
public:
static DatabaseEngine& instance();
void do_something();
};
каст:
#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 :: instance (void) "(? instance @ DatabaseEngine @@ SAAAV1 @ XZ), на который ссылается функция" public: __thiscall UsersWindow :: UsersWindow (класс QWidget *) "(?? 0UsersWindow @@ QAE @ PAVQWidget @@@ Z)
userswindow.obj: -1: ошибка: LNK2019: неразрешенный внешний символ "public: void __thiscall DatabaseEngine :: do_something (void)" (? Do_something @ DatabaseEngine @@ QAEXXZ) ссылка в функции "public: __thiscall UsersWindow :: UsersWindow (класс QWidget *)»(?? 0UsersWindow @@ QAE @ PAVQWidget @@@ Z)
благодаря
Мне кажется, что файл cpp для DatabaseEngine не включен в проект, поэтому Visual Studio не компилирует этот код. – drescherjm
BTW, Одна из причин, по которым я думал, что это была ошибка, о которой упоминаются оба ответа. Я видел, что ваш .cpp-файл не может скомпилироваться. Поэтому, если у вас нет ошибок, вы либо разместили неправильный код, либо файл не был частью вашего проекта. – drescherjm