根据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) 我设计了InputField一个具有2个参数的构造函数的类:explicit InputField(InputFieldIndex uiIndex, QString sName) noexcept;
我将这个类存储在a中QVector,所以,不幸的是,我必须添加一个default-contructor.在软件设计方面,这对我不利(因为我有一个约束uiIndex).有没有办法只允许QT(QVector在我的情况下)调用默认构造函数?宏或预处理器指令?