gpt4 book ai didi

c++ - 派生自同一类但不共享公共(public)方法的两个对象的类设计

转载 作者:搜寻专家 更新时间:2023-10-31 01:54:36 24 4
gpt4 key购买 nike

我有一组表示文件中字体格式存储的类。每种字体定义一组字形(映射到 UTF32 代码的形状)。

字形可以用轮廓(在我的例子中是一组贝塞尔曲线)或位图表示。

我的第一个想法是,这会导致继承自 Glyph 的 GlyphOutline 和 GlyphBitmap 类。

这种设计的唯一问题是没有通用的方法。为了对任何一个类做任何有用的事情,我都需要使用 rtti(我宁愿避免使用)。

我的问题是:你能想到一种更好的方式来表示字形/是否有一些设计模式可以处理这种情况?

我试图让这种语言不可知,但如果它有任何不同,我正在用 c++ 编写。

编辑:

我考虑过使用泛型,其中 Glyph 包含对一些/许多 GlyphRepresentations 的引用,其中 T 可以是 Outline 或 Bitmap 或您可以用来表示字形的任何其他内容。我实际上非常喜欢这个解决方案,因为它解决了由轮廓和位图表示的字形问题。但是,它会强制使用 rtti。

如果我使用 c#,这可能是我会选择的解决方案,其中反射非常好,但在 c++ 环境中,我在 rtti 中工作是作为一组非常复杂的宏实现的,我相信你可以明白我很想避免

编辑:

在回答 oli 时,我同意你的观点,但是存在 isa 关系(在 GlyphOutline 中是一个字形,并且可以做一个字形可以做的一切),我认为这意味着应该有继承?我不确定这一点,似乎无论哪种方式都有很好的论据。

到目前为止,我首选的解决方案是访问者模式,但这只是评论而不是自动取款机的答案,我想再等一会儿,看看是否有其他解决方案浮出水面。

最佳答案

听起来好像 drawOnScreen()getMetrics()getCodePoint() 等方法是多态行为的良好候选者。

关于c++ - 派生自同一类但不共享公共(public)方法的两个对象的类设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9429364/

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