这是我的问题:我想子类QVector为了添加一些特定于我的上下文的函数。QVector子类化<T>
幼稚的做法是:
class ClassVector : public QVector<Class> { ... }
但这里的问题是,当我需要调用上QVector其返回新QVector(或&自身)几个功能之一:
ClassVector cv1, cv2;
auto sum = cv1 + cv2;
这是有效的但是 sum是QVector,因为operator + return QVector。
有没有简单的方法来让它以某种方式返回ClassVector?
呼吁结果的reinterpret_cast是不是我想做的事:/
如果它是重要的,我只添加功能ClassVector,没有数据成员。
感谢您的帮助。
我不知道QVector,但并不是所有的类都意味着被继承。你可以添加你的函数作为独立(或在命名空间)?特别是如果你只添加功能,并且它没有虚拟功能。 – 2014-09-23 12:57:44
我建议不要继承'QVector'。你可以添加你的函数作为自由函数,因为你显然不需要为类添加状态?或者,你可以用'QVector'作为成员而不是超类来创建你的新类(这称为聚合)? – 2014-09-23 12:58:38
是的,这就是我目前正在做的(命名空间中的免费函数),但是我很好奇,如果没有更聪明的方法来做这件事..看起来它不是:/ – Paladin 2014-09-23 13:11:43