我在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语句返回非void(赋值运算符代码行的那个)。
那么,为了最终摆脱这两个警告,我能做些什么呢?
答案 0 :(得分:1)
尝试使用与functools.partial
相同的父级初始化QObject
base:
other
DataBase(DataBase const& other) :
QObject(other.parent())
// copy-construct members
{
}
应如下所示:
operator=
请注意,您所做的不是默认实现。他们什么都不做!
您可能希望使用default
关键字(如果您在C ++ 11或更高版本下进行编译)将这些函数的实现留给编译器:
DataBase &operator=(DataBase const& other)
{
QObject::operator=(other);
// copy-assign members
return *this;
}