gpt4 book ai didi

c++ - 复制构造函数初始值设定项列表中 CObject 的子项

转载 作者:行者123 更新时间:2023-11-28 07:42:03 24 4
gpt4 key购买 nike

我的任务是移植一些遗留代码,在这样做的过程中,我想尽可能地遵循最佳实践,因为遗憾的是我的前任没有这样做。以下是我遇到的问题的基本框架:

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 时为类编写复制构造函数是最佳实践,所以这就是我正在尝试做的事情。我想做的是在 Foo 的复制构造函数初始化列表中包含 CPropertyPage 的复制构造函数,但这是不允许的,因为 CPropertyPage 是 MFC 类 CObject 的子类,其复制构造函数是私有(private)的。如果我尝试使用 Foo 的构造函数初始化列表中使用的构造函数,它会编译,但我不确定这是否达到与 CPropertyPage 的复制构造函数相同的目的(免责声明:我对复制构造函数和初始化列表还很陌生)。

那么,我怎样才能正确地编写Foo 的复制构造函数呢?我的方法是否存在某种根本性缺陷?

编辑:尝试修复语法,将 CObject 识别为 MFC 类

最佳答案

以下是与此问题相关的 MSDN 链接:

http://msdn.microsoft.com/en-us/library/ccb3dh5c.aspx

原来我的静态分析工具在检查初始化列表中的基类时有点过分热心。

关于c++ - 复制构造函数初始值设定项列表中 CObject 的子项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15641597/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com