【发布时间】:2014-05-26 00:22:08
【问题描述】:
我在尝试为我的 C++ 类解决一个简单问题时遇到了一些麻烦。
我有两个类:Component,一个从中继承其他类的抽象类和List,一个具有组件列表的类(它不是模板类)。我想重载operator+。这样当我“添加”两个组件时,它将返回一个包含两个 Components 的 List。
我已经这样做了,它没有显示任何错误:
friend List operator +(Component &c1, Component &c2) {
List l;
l.push(c1);
l.push(c2);
return l;
}
但是,当我尝试“添加”两个从 Component 继承的类对象时,出现以下错误:
no match for 'operator+' in 'c1 + c2'
这是我添加对象的方法:
Inherited1 c1(1, 2, 3);
Inherited2 c2(1, 3.2, 10);
List l1 = c1+c2;
【问题讨论】:
-
This works 基本上就是你所展示的。这里肯定存在不可重现的问题。
-
这是个坏主意。除非您实际上是在实现 DSL,否则您应该保留运算符的算术含义。
-
operator +接收Component&,你发送的是Inherited,它将如何工作? -
@RakibulHasan,因为它是派生类。
-
你需要在类外添加函数的定义。
标签: c++ operator-overloading abstract-class