c++ - C++ 类超类
问题描述
我目前正在制作 python 的 C++ 版本svg.path
。有多种类型的路径,例如 a Line
,CubicBezier
等,它们是单独的类(没有继承,除了Line
和Close
继承自,Linear
但可以在必要时删除)。还有一个Path
类,在 python 中有一个段列表。但我不确定如何在 C++ 中有一个段向量。
所以是这样的:
class Line {};
class CubicBezier {};
class Arc {};
class Path {
// Segment should be able to store any type of Segment like Line, Arc, etc.
vector<Segment> segments;
};
目前我能想到的最好的事情是我有一个Segment
类来存储所有的段类型,并为它们中的每一个都有各种 setter 和 getter,但这看起来很乏味和烦人,而且效率低下。
另外,如果有更好的方法来做到这一点(几乎肯定有),请解释如何做到这一点,我会尝试的。
如果需要,我可以从svg.path
.
解决方案
由于您没有使用继承,因此您需要一个不同的工具。看来您想要类似std::variant<Line, CubicBezier, Arc>
.
这种方法的缺点是您需要自己处理所有不同的情况,因为没有通用的基类接口。
推荐阅读
- flutter - valuenotifier 在更新列表时未更新小部件
- git - 您可以将现有的 git 存储库转换为“blobless”吗?
- google-apps-script - 如何根据自动过滤数据动态传输所有 Google 表格中的数据
- docker - 如何在 dockerfile 中为我的服务找到我需要的基本映像
- postcss - PostCSS 插件的未知错误。您当前的 PostCSS 版本是 8.3.0,但 postcss-preset-env 使用 7.0.36
- rust - 如何捕捉anyhow::Result?
- javascript - measureText 与 WebGLRenderingContext 上下文?
- javascript - 删除状态数组后我的组件没有更新
- html - 带有 Bootstrap 5 和纵横比的 Flexbox
- sql - 如何将数据插入到 SQL 中具有换行符的表中?