【发布时间】:2013-11-13 04:57:30
【问题描述】:
我需要帮助找出代码有什么问题:
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()
{
}
用户窗口.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: error: LNK2019: unresolved external symbol "public: static class DatabaseEngine & __cdecl DatabaseEngine::instance(void)" (?instance@DatabaseEngine@@SAAAV1@XZ) 在函数“public: __thiscall UsersWindow::UsersWindow(class QWidget *)" (??0UsersWindow@@QAE@PAVQWidget@@@Z)
userswindow.obj:-1: error: LNK2019: unresolved external symbol "public: void __thiscall DatabaseEngine::do_something(void)" (?do_something@DatabaseEngine@@QAEXXZ) 在函数“public: __thiscall UsersWindow::UsersWindow”中引用(类 QWidget *)" (??0UsersWindow@@QAE@PAVQWidget@@@Z)
谢谢
【问题讨论】:
-
对我来说,项目中似乎没有包含 DatabaseEngine 的 cpp 文件,因此 Visual Studio 没有编译该代码。
-
顺便说一句,我认为这是两个答案都提到的错误的原因之一。我看到您的 .cpp 文件无法编译。因此,如果您没有收到任何错误,您要么发布了错误的代码,要么该文件不是您项目的一部分。