c++ - 如何在没有复制构造函数的情况下初始化类的静态实例>

标签 c++ qt static initialization c++14

<分区>

我的类没有复制构造函数或赋值运算符。我需要创建并初始化该类的一个实例。我该怎么做?

有问题的代码(示例):

class Q
{
    int w;
    public:
    Q():w(19){};
    Q(const Q&) = delete;
    Q& operator = (const Q&) = delete;

    static Q sQ;
};

Q Q::sQ = Q();

On ideone

用例:我有一个派生自 QObject 的类,因此删除了它的赋值运算符和复制构造函数。应该有一个类的静态实例可用,如何实现?

最佳答案

您可以使用 uniform initialization syntax并用一组空的花括号构造类

Q Q::sQ{};

或者你甚至可以像这样去掉花括号:

Q Q::sQ;

两者都将默认构造sQ

关于c++ - 如何在没有复制构造函数的情况下初始化类的静态实例>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37445814/

相关文章:

c++ - STL优先级队列递增

c++ - 通过组节点的2D vector 进行手动迭代

qt - 使用 QMAKE 构建 32 位和 64 位版本的项目

c++ - 从多个线程写入 SQLite 数据库

c++ - 对 FILE 的操作改为对 QByteArray 的操作?

c++ - std::thread::hardware_concurrency 和静态初始化

c++ - MATLAB 在 mex_compile Linux 中找不到支持的编译器或 SDK

c++ - 不输出计算,只是0

c# - 为什么我们使用非静态属性来锁定非静态字段?

c++ - 头文件中的变量声明 - 静态与否?