在复制构造函数中调用常量引用的方法
Call method of a const reference in a copy constructor
>我正在使用复制构造函数来获取MapObject
并复制它及其属性。
但是,这个对象已经生成到游戏中,所以在构造上我想从游戏中删除这个对象。
从本质上讲,我要做的是:
MapObject::MapObject(const MapObject& _mapobject)
{
_mapobject.Derez();
Rez();
}
如何在复制构造函数中完成此操作而无需在const&
上调用它?
编辑:切换到智能指针向量完全解决了这个问题。
你可以做一个可变的复制构造函数:
MapObject::MapObject(MapObject& _mapobject) // << no const here
但是,您留下了一个不复制的复制构造函数,那只是自找麻烦。
只有在Derez
const
时才能调用它。
但对我来说,设计似乎是错误的。为什么要创建副本会从游戏中删除原件?为什么类首先负责从游戏中删除自身的实例?为什么你甚至试图复制游戏中已经存在的对象?
对我来说,这似乎比实际调用该方法更重要。
我强烈建议不要让您的复制构造函数修改其参数的逻辑状态。 这是非惯用语,可能会导致混乱。
相反,在调用站点执行类似操作:
MapObject o2 = o1;
o1.remove();
相关文章:
- 在他自己的方法中,有可能将一个对象取消引用到另一个对象吗
- 在 cpp 文件中隐藏采用模板参数引用的方法
- 拥有映射的现代方法,该映射可以指向或引用已在堆栈上分配的不同类型的数据
- 为什么常量方法可以采用非常量引用?
- 没有取消引用/解包对象的标准方法?
- C++方法中的引用变量
- 引用文件的适当方法是什么?
- C++有什么方法可以在既不调用函数模板也不提供其模板参数的情况下引用函数模板?
- 对结构方法的未定义引用
- 通过基类接受方法转发派生 UniquePtr 的右值会移动引用而不是复制
- 使用移动语义:右值引用作为方法参数
- Unity3D 导入 C++ DLL 用于按引用方法传递
- 通过引用方法传递对象
- 无法将从函数返回的向量传递给需要引用方法的函数
- 正在调用指针和引用方法
- 与const引用(方法链)相关联的临时对象的生命周期
- 方法内部的简单c++成员引用(方法解析后的链接器错误)
- 被引用方法的未定义引用
- 无法引用方法
- 我如何在外面引用 C++ 方法