C++ 使用父对象的派生类
我希望在更新base类型的对象时更新派生类,因为它们共享对base的相同引用。这将在已经创建基类之后完成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
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我认为有某种方法可以利用继承,而不是在不同的类中声明指针。我知道我可以删除继承并使用指针,但我希望找到一个不涉及肿瘤的解决方案。指针->变量名称,一个看起来更像肿瘤->变量名称的解决方案。