gpt4 book ai didi

c++ - 避免沿并行层次结构向下转换值

转载 作者:行者123 更新时间:2023-11-28 07:42:08 26 4
gpt4 key购买 nike

我有两个类层次结构:

BaseUnit <- S1Unit , BaseUnit <- S2Unit, ..S3Unit, S4Unit

Base <- S1 , Base <- S2

Base 中,我存储了单位的值。

class Base {
protected: BaseUnit unit; // actually this is an upcast of S1Unit, S2Unit
// of course I do several things with unit on methods of Base
}

基于 S1Unit、S2Unit ..

S1::S1(S1Unit s1unit) : unit(s1unit) { .. }

但是,如果我现在想归还 S1 中的专业单位,我最好怎么做?

S1Unit S1::getUnit() const { return this->unit; /* how to cast down? */ }

我可以实现 S1Unit BaseUnit S1Unit::S1Unit(BaseUnit) 的构造函数,它工作正常,但是这种向下转换的复制构造函数不知何故不是很好。我检查过的所有答案都显示了使用指针的示例。

什么是更好的解决方案?还有其他选择吗?

最佳答案

类之间不同的功能应该通过 virtual functions 公开.

然后,你不需要向下转换对象,你可以直接返回unit。调用的成员函数将是您创建的对象的正确成员函数。

关于c++ - 避免沿并行层次结构向下转换值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15621517/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com