gpt4 book ai didi

c++ - 计算没有 RTTI 的对象

转载 作者:搜寻专家 更新时间:2023-10-31 00:18:22 25 4
gpt4 key购买 nike

我遇到了一个让我觉得很愚蠢的问题。在一个业余项目中,我有一个指向接口(interface)类的指针的 std::list,它指向所述接口(interface)的各种具体实现。

例如,假设我有以下内容:

class Seafood ...
class Fishstick : public Seafood ...
class Squid : public Seafood ...
...
std::list<Seafood*> buffet;

现在我的自助餐中摆满了不同的海鲜,我想数一数我可用的鱼排数量,看看是否需要从厨房订购更多鱼排。

如果没有 RTTI 或一些曲折的实现,我将如何做到这一点?我读过一些文章声称,如果您发现自己想要使用 RTTI,那么您正在以错误的方式接近 OOP 和/或您的解决方案应该重新设计。是否有一些模式或其他解决方案可以解决这个问题?我敢肯定之前已经多次浮出水面。

我在想显而易见的是某种虚函数,但如果不构建一个俗气的 RTTI 版本,或者不了解接口(interface)中的后代(CountIfFishstick/IsFishstick/Is),我无法弄清楚如何做到这一点(类型))。

编辑:想到的另一件事是保留一份鱼排 list 、一份鱿鱼 list 等。但这肯定会破坏界面/实现的全部目的。

最佳答案

您可能需要访问者模式的一些变体。有很多,很难说你想要哪个。我可能会建议获取Modern C++ Design 并查看 Alexendrescu 的实现。否则,谷歌“访问者模式”,您将获得 1000 公里的阅读链接。

关于c++ - 计算没有 RTTI 的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10759559/

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