C++ 使用父对象的派生类

C++ 使用父对象的派生类,c++,class,C++,Class,我希望在更新base类型的对象时更新派生类,因为它们共享对base的相同引用。这将在已经创建基类之后完成 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==(co

我希望在更新base类型的对象时更新派生类,因为它们共享对base的相同引用。这将在已经创建基类之后完成

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
有一个
标记
变量


std::cout tag)不能使用继承在派生类的多个实例之间共享同一个基实例,因为根据定义,派生类创建自己的基实例

如果不想使用
tumor.pointer->tag
构造,可以编写一个getter函数:

tag_type& Tumor::GetTag() {
    return pointer->tag;
} 

因此,您要使用它
tumor.GetTag()

为什么不使用从sc2::Unit继承的
tumor.tag
?@JakeFreeman,因为它在构造时生成sc2::Unit的副本,它不是对原始的引用,除了类中的指针之外,我不知道如何引用它。这就增加了在我访问标记之前访问指针的需要。根据标记的类型,你可以在名为tag的类中有一个实例变量,引用类型为pointers标记。你为什么需要在这里继承?@Alex我认为有某种方法可以利用继承,而不是在不同的类中声明指针。我知道我可以删除继承并使用指针,但我希望找到一个不涉及肿瘤的解决方案。指针->变量名称,一个看起来更像肿瘤->变量名称的解决方案。