【发布时间】:2019-06-03 08:00:29
【问题描述】:
我的任务是实现一个简单的 SVG 生成器。我需要支持圆形、折线和文本。这三者至少有 4 种常用方法: - 设置描边颜色 - 设置填充颜色 - 设置描边宽度 - ToString 主要要求之一是支持链接,例如: 折线{}.SetStrokeColor("white").SetFillColor("black")...
我决定实现一个基类 Element,所有其他类都继承自它。这个想法是有一个类 Document ,它包含添加到文档中的所有元素的向量。 基本方法的示例签名:
// source of trouble
Element &SetStrokeColor(const Color &color) {
...
return *this;
}
我的派生类确实调用了这些方法,但问题是这些方法返回的是对基类 Element 的引用,而不是派生类。
我的问题是是否可以一起用 c++ 实现???
【问题讨论】:
-
请花一些时间刷新the help pages,重新获取the SO tour,并重新阅读how to ask good questions,以及this question checklist。最后请不要忘记如何创建minimal reproducible example。
-
根本不是问题——只是你的签名有多余的&符号...
-
@Aconcagua 错字
-
对基类的引用是对派生类的抽象引用。你到底想达到什么目的?鉴于您想将所有元素存储在一个向量中,您以后只能访问
Element -
错字-确定;请注意,它仍然生成有效的 c++,并且您会返回一个右值引用...
标签: c++ inheritance