Qt5:如何摆脱此Singleton的编译器警告?

斯坦利·格罗宁(Stanley Gronen)

我在Windows 7平台上使用Qt5。
我已经为我使用的数据库实现了Singleton。
到目前为止,还可以,可以正常工作,但是当我编译代码时,我总是收到2条与复制构造函数和赋值运算符有关的警告。

这是代码:

class DataBase : public QObject
{
    Q_OBJECT

public:
    static DataBase * instance(QObject * parent = 0);
    static void destroy();
    //
    QString openDataBaseConnection();
    void closeDataBaseConnection(QString & connectionName);

private:
    DataBase(QObject * parent);
    ~DataBase();
    DataBase(DataBase const &){} // <- copy constructor
    DataBase & operator = (DataBase const &){} // <- assignment operator
    static DataBase * pInstance;
};

这是编译器警告:

1)基类QObject应该在复制构造函数中显式初始化
2)函数中没有return语句返回非空(这是用于赋值运算符代码行)。

那么,为了最终摆脱这两个警告,我该怎么办?

逻辑资料
  1. 尝试QObject使用具有相同的父对象初始化base other

    DataBase(DataBase const& other) :
    QObject(other.parent())
    // copy-construct members
    {
    } 
    
  2. operator=外观如下:

    DataBase &operator=(DataBase const& other)
    {
        QObject::operator=(other);
        // copy-assign members
        return *this;
    }
    

    警告是关于您忘记了return *this;

请注意,您正在执行的操作不是默认实现。他们什么都不做!

您可能想要使用default关键字(如果您使用C ++ 11或更高版本进行编译),则将这些功能的实现留给编译器处理:

DataBase(DataBase const &) = default;
DataBase &operator=(DataBase const&) = default;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何摆脱被“ continue”混淆的编译器警告?

来自分类Dev

printf如何发出编译器警告?

来自分类Dev

如何抑制编译器警告?

来自分类Dev

为什么此模板变量导致编译器警告?

来自分类Dev

为什么此模板变量导致编译器警告?

来自分类Dev

如何使用Qt5编译Qt FTP Webkit示例?

来自分类Dev

编译器警告枚举

来自分类Dev

Dagger编译器警告

来自分类Dev

此代码如何在编译器中执行?

来自分类Dev

如何抑制编译器警告C4373

来自分类Dev

构建Jenkins插件时如何获取编译器警告

来自分类Dev

如何避免在Scala中出现for循环的编译器警告?

来自分类Dev

如何使Kotlin编译器将警告视为错误?

来自分类Dev

如何在gitlab CI中检测编译器警告

来自分类Dev

如何在Eclipse中重新启用编译器警告?

来自分类Dev

如何获得编译器警告 JUCE - Ubuntu

来自分类Dev

Qt添加编译器

来自分类Dev

QT添加编译器

来自分类Dev

如何在Qt中设置编译器?

来自分类Dev

如何与Qt 4.8.5兼容的Mingw编译器

来自分类Dev

如何从Qt Creator中删除-fPIE编译器开关

来自分类Dev

Qbs:如何启用Qt快速编译器?

来自分类Dev

为什么使用“ crypt”的源代码有此编译器警告:

来自分类Dev

在不使用“#include <regex.h>”的情况下摆脱正则表达式编译器警告

来自分类Dev

编译支持Qt5的Plplot

来自分类Dev

关闭资产目录编译器警告

来自分类Dev

资产目录编译器无故警告

来自分类Dev

禁止Swift编译器警告

来自分类Dev

Mailgun / AFNetworking的编译器警告