“identifier”: 没有可用的复制构造函数或复制构造函数声明为“explicit”
复制构造函数从同一类型的另一个对象初始化某对象。 (它生成对象的副本。)如果没有定义任何构造函数,则编译器生成默认复制构造函数。
修复此错误的方法
在尝试复制其复制构造函数为
private
的类时,可能出现该问题。 在大多数情况下,不应复制具有private
复制构造函数的类。 通用编程技术声明private
复制构造函数以防止直接使用类。 该类本身可能无用,或需要另一个类才能正常工作。如果确定可安全地使用具有
private
复制构造函数的类,请从该具有private
构造函数的类派生一个新类,并使public
或protected
复制构造函数在该新类中可用。 使用该派生类替代原始类。在尝试复制其复制构造函数为显式的类时,可能出现该问题。 将复制构造函数声明为
explicit
会阻止将类的对象传递到对象或从函数到类的对象。 有关显式构造函数的详细信息,请参阅用户定义类型转换。当尝试复制使用不采用
const
引用参数声明const
的类实例时,可能出现该问题。 请使用const
类型引用而不是非常量类型引用声明复制构造函数。