c++ - C2248 : cannot access private member declared in Singleton class如何解决

标签 c++ qt

请帮忙... 我有单例类,但无法获取它的实例。

dbinfogetterdao.h

#ifndef MATRIXGETTERDAO_H
#define MATRIXGETTERDAO_H
#include <QtSql/QSqlDatabase>

namespace Ui{
    class DBInfoGetterDAO;
}

class DBInfoGetterDAO
{
    public:
        static DBInfoGetterDAO& getInstance();
    private:
        DBInfoGetterDAO();                   
        DBInfoGetterDAO(DBInfoGetterDAO const&);              
        void operator=(DBInfoGetterDAO const&); 
};

#endif // MATRIXGETTERDAO_H

dbinfogetterdao.cpp

#include "dbinfogetterdao.h"
#include <QtSql/QSqlDatabase>
#include <QDebug>
#include <QSqlError>
#include <QSqlQuery>


DBInfoGetterDAO& DBInfoGetterDAO::getInstance()
{
    static DBInfoGetterDAO instance;
    return instance;
}

DBInfoGetterDAO::DBInfoGetterDAO()
{
    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
    db.setHostName("localhost");
    db.setDatabaseName("mdpschema");
    db.setUserName("root");
    db.setPassword("password");
    bool ok = db.open();
    qDebug() << "db connection status = " << ok;
    QSqlError error = db.lastError();
    if (ok == false){
        qDebug() << "error text = " + error.text();
    }
}

我这样创建实例:

   DBInfoGetterDAO dbInfoGetterDAO = DBInfoGetterDAO::getInstance(); 

请你解释一下我做错了什么。

最佳答案

你的构造函数是私有(private)的,所以你不能创建你的类的对象。

关于c++ - C2248 : cannot access private member declared in Singleton class如何解决,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22886418/

相关文章:

c++ - glm::rotate() 调用无法编译?

c++ - QTcpSocket 发送的数据比想要的多 - Qt/C++

c++ - 等待 QLineEdit 文本更改

qt - QGraphicsView->centerOn() 不起作用

c++ - 如何在 Linux 上创建 .desktop 文件应用程序启动器?

linux - debug_and_release 选项不适用于 linux

c++ - 有什么方法 GetExitCodeProcess 可以将退出代码设置为错误的值吗?

c++ - 什么构成了 RValues?

c++ - 物理引擎的数值积分有哪些好的算法?

qt moc.exe 错误