【发布时间】:2020-07-13 19:28:43
【问题描述】:
我有一个指向一组对的指针 - pair(K, V)* myPairs - 有问题的实例是 with (string, Set(string)) 其中 Set 是一个二叉搜索树类。我正在尝试创建一个使 myPairs 大小翻倍的函数,所以我:
- 创建 newPairs 并复制 myPairs 中的数据
- 删除我的配对
- 将 myPairs 设置为 newPairs
问题是删除 myPairs 也会调用关联集的析构函数,但我仍然想访问该数据。我怎样才能避免这种情况???
【问题讨论】:
-
请显示问题所在minimal reproducible example(例如:为什么调用原始对象的析构函数会出现问题)
-
"我有一个指向一组对的指针..." - 为什么?为什么不简单地使用
std::set(或std::vector)? -
这可能是您设置的课程的问题。从集合中删除移动/复制的内容不应影响新集合。
-
复制步骤应该已经为您解决了这个问题。确保您正确观察了Rule of Three or Rule of Five。五个听起来可能比三个更适合这里。
-
投票暂时关闭它。不是一行代码。猜谜游戏毫无意义。
标签: c++ pointers binary-search-tree destructor std-pair