小编Jos*_*ier的帖子

如何在没有复制构造函数的情况下克隆对象

根据CppCoreGuideline,我应该禁用基类的复制构造函数并提出一个克隆方法:https : //github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Rc-copy-virtual

例如:

class B {
   public:
     explicit B() = default;
     B(B&&) = default; // Move constructor
     B& operator=(B&&) = default; // Move assignment operator
     B(const B&) = delete; // Copy constructor
     B& operator=(const B&) = delete; // Copy assignment
     virtual ~B() = default;

     virtual unique_ptr<B> clone()
     {
        return unique_ptr<B>{new B{*this}}; // how do this without copy constructor ?
     }
    private:
     int c;
     int d;
};

class D : public B {
    public:
     explicit D() = default;
     D(D&&) …
Run Code Online (Sandbox Code Playgroud)

c++ deep-copy c++14

5
推荐指数
1
解决办法
3688
查看次数

构造函数调用的约束

我设计了InputField一个具有2个参数的构造函数的类:explicit InputField(InputFieldIndex uiIndex, QString sName) noexcept;

我将这个类存储在a中QVector,所以,不幸的是,我必须添加一个default-contructor.在软件设计方面,这对我不利(因为我有一个约束uiIndex).有没有办法只允许QT(QVector在我的情况下)调用默认构造函数?宏或预处理器指令?

c++ qt

2
推荐指数
1
解决办法
101
查看次数

标签 统计

c++ ×2

c++14 ×1

deep-copy ×1

qt ×1