首页 > 解决方案 > C++ 类超类

问题描述

我目前正在制作 python 的 C++ 版本svg.path。有多种类型的路径,例如 a LineCubicBezier等,它们是单独的类(没有继承,除了LineClose继承自,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.

标签: c++classinheritance

解决方案


由于您没有使用继承,因此您需要一个不同的工具。看来您想要类似std::variant<Line, CubicBezier, Arc>.

这种方法的缺点是您需要自己处理所有不同的情况,因为没有通用的基类接口。


推荐阅读