gpt4 book ai didi

c++ - MFC CList 是否支持复制赋值?

转载 作者:搜寻专家 更新时间:2023-10-31 01:04:53 24 4
gpt4 key购买 nike

我在 MSVC afxtempl.h 中查找了 CList 定义和关于 MSDN 的文件.我没有看到定义了 CList& operator=(const CList&);

我可以直接使用 operator= 来复制一个 CList 对象吗?

 CList<int> a = b;

或者我应该在 objective-c List 上手动从 headtailAddTail 迭代源 CList?

 for(POSITION pos = a.HeadPosition(); pos; )
{
const auto& item = a.GetNext(pos);
b.AddTail(item);
}

任何建议都会有所帮助。谢谢。

最佳答案

如果复制赋值运算符没有被定义,那么它就没有被定义并且不能被使用。 CList 也是如此,正如您已经观察到的那样,所以不,您不能只使用 operator= 来复制 CList 对象。如果您想要集合的深拷贝,您将需要编写一个函数来手动执行此操作。

但请考虑您是否真的想要深拷贝。大多数时候,您会希望通过引用而不是值来传递集合类型。在 MFC 中尤其如此,它们可以包含从 CObject 派生的不一定要复制的对象。事实上,您会注意到 CObject 类使用私有(private)复制构造函数和赋值运算符明确禁止复制:

   // Disable the copy constructor and assignment by default so you will get
// compiler errors instead of unexpected behaviour if you pass objects
// by value or assign objects.
private:
CObject(const CObject& objectSrc); // no implementation
void operator=(const CObject& objectSrc); // no implementation

关于c++ - MFC CList 是否支持复制赋值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23210250/

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