我正在尝试为Clib类写一个复制构造函数,这个类是从Cotherlib派生的,它没有默认的构造函数。我的原始代码包含一个深度复制操作,并使用另一个返回CLib对象的c函数,因此需要一个复制构造函数#include "stdafx.h“
struct IMem
{
virtual void function_f_1() = 0;
virtual void function_f_2() = 0;
};
class MyMem : public IMem
{
public:
void function_f_1()
{
}
void function_f_2()
{
}
};
class CDependentLib1
{
public:
CDependentLib1()
{
}
~CDependentLib1()
{
}
};
class CDependentLib2
{
public:
CDependentLib2()
{
}
~CDependentLib2()
{
}
};
class COtherLib
{
public:
COtherLib(IMem &Mem, CDependentLib2 &objDependentLIb2)
{
}
~COtherLib()
{
}
};
class CLib : public COtherLib
{
public:
CLib(IMem &mem):
m_1(),
m_2(),
COtherLib(mem,m_2)
{
}
~CLib()
{
}
CLib(const CLib &ObjClib)// here i am getting error
{
}
private :
CDependentLib1 m_1;
CDependentLib2 m_2;
};
int main()
{
MyMem ObjMem;
CLib objLib(ObjMem);
return 0;
}如何创建复制构造函数。我没有被授权编辑基类代码和添加默认构造函数
发布于 2020-03-16 13:50:14
是时候不要迷惑了,买一本好的C++书吧。
如果要覆盖默认的复制构造函数,则必须从原始构造函数中复制元素,以便自己复制。除非您计划在复制ctor中实际执行某些操作,否则要么根本不放置复制ctor,要么只是想要一个复制ctor:
class A
{
int i;
public:
A(int a): i(a) {}
A(const A &) = default;
};尽管只有一个拷贝ctor是一种糟糕的做法。最好遵循rule of 3或5的规则。
https://stackoverflow.com/questions/60700838
复制相似问题