我的任务是移植一些遗留代码,在此过程中我想尽可能地遵循最佳实践,因为我的前任很遗憾没有这样做。以下是我遇到的问题的基本框架:
class Foo : public CPropertyPage
{
// Constructor
Foo() : CPropertyPage(Foo::ID)
{
pBar = new Bar();
// init other things
}
// Copy Constructor
Foo(const Foo& other) : CPropertPage(other) // C2248 compiler error
{
pBar = new Bar(*other.pBar);
// copy other things
}
}
因为我已经读过最好的做法new
是在构造函数中使用时为类编写一个复制构造函数,这就是我想要做的。我想要做的是CPropertyPage
在Foo
复制构造函数初始化列表中包含复制构造函数,但这是不允许的,因为CPropertyPage
它是 MFC 类的子类CObject
,其复制构造函数是私有的。如果我尝试在Foo
的构造函数初始化列表中使用的构造函数,它会编译,但我不确定这是否达到与CPropertyPage
复制构造函数相同的目的(免责声明:我对复制构造函数和初始化列表很陌生)。
那么,我该如何正确编写Foo
的复制构造函数呢?我的方法在某些方面存在根本缺陷吗?
编辑:尝试语法修复,标识CObject
为 MFC 类