使用父对象的派生类
Derived class utilizing a parent object
当更新类型基础对象时,我想进行派生的类更新,因为它们与基数共享相同的参考。这将在已经创建基类之后完成。
class Tumor : sc2::Unit {
public:
Tumor(const sc2::Unit *unit) : pointer(unit){}
~Tumor()
float spread = 10.0f;
float vision = 11.0f;
// Other things...
bool operator==(const Tumor& rhs) { return pointer->tag == rhs.tag; }
const sc2::Unit *pointer = nullptr;
};
而不是访问 tumor.pointer->tag
我想成为: tumor.tag
sc2::Unit
具有tag
变量,当我放置
std::cout << "tumor_tag Address: " << &(this->pointer->tag) << "tunit_tag Address: "
<< &(unit->tag) << std::endl;
在构造函数中,我将输出相同的内存位置。
我知道我可以将sc2::Unit
指针存储在Tumor
中(如所示),但我试图找到一个更优雅的解决方案,而我的Google-foo却很弱或不可能。
您不能使用继承在派生类的多个实例之间共享基础的相同实例,因为按定义派生的类创建了基础的实例。
如果您不想使用tumor.pointer->tag
构造,则可以编写一个getter函数:
tag_type& Tumor::GetTag() {
return pointer->tag;
}
所以您将使用它tumor.GetTag()
。
相关文章:
- 为什么此派生对象无法访问基类的后递减方法?
- 如何在新的派生对象中获取基本对象的数据?
- 如何将成员函数作为参数传递并在派生对象上执行方法列表
- 在没有默认构造函数的情况下创建的派生对象
- OOP 标识派生对象
- 如何创建派生对象的向量?
- 将基类分配给派生对象,反之亦然,以C++以及静态和动态对象之间的差异
- 如何从 Gtk::窗口调用派生对象的析构函数
- 无法在派生对象上运行虚拟函数
- 尝试删除指向派生对象的基指针时断言错误
- 存储在一个通用容器中的派生对象.如何避免铸造
- 将派生对象分配给函数内的基类指针
- 替换派生对象向量中的对象"no matching function to call"
- 派生对象调用的 Base 方法的模板推导
- 用于填充 Base 和派生对象的 shared_ptr 向量的函数模板
- C++ UBSAN 对派生对象产生误报
- 如何验证我是否正在使用C++中的基对象或派生对象
- C++ 构造函数和派生对象
- 将派生对象传递给模板
- 指向派生作品的基本指针,即使派生对象不存在