【发布时间】:2023-04-04 16:02:01
【问题描述】:
我有一个项目,其中有很多相关的 Info 类,我正在考虑通过一个 AbstractInfo 类和一堆派生类来建立一个层次结构,并根据需要覆盖 AbstractInfo 的实现。然而事实证明,在 C++ 中使用 AbstractInfo 类然后创建派生对象之一并不是那么简单。 (见this问题,评论最后一个答案)
我打算创建一个工厂类,它创建一个 Info 对象并始终返回一个 AbstractInfo 对象。我从 C# 中知道,您可以使用接口来做到这一点,但在 C++ 中,情况似乎有些不同。
向下铸造成为一件复杂的事情,而且似乎容易出错。
有人对我的问题有更好的建议吗?
【问题讨论】:
-
您能详细说明“没那么简单”是什么意思吗?
-
一般来说,如果您在
AbstractInfo中没有完整的接口,这应该是一个问题,即您需要访问一些仅在子类中定义的方法。但这也可能意味着您的设计不是最理想的。有了这么少的信息,很难说更多。
标签: c++ polymorphism factory casting