【发布时间】:2013-12-18 05:50:45
【问题描述】:
我有一个基类和两个派生类。我想实现一些乘法运算符,可用于将两个类中的对象相乘。
class Base
{
public:
virtual ~Base() {}
virtual void print() = 0;
Base operator * (Base & b1, Base & b2) { return b1 * b2; } <---- this wont work because of pure virtual function
};
class D2;
class D1 : public Base
{
public:
void print() { ....}
D1 operator * (D1 & d) {//do some operation here}
D1 operator * (D2 & d) {//same as above...}
private:
int i;
};
class D2 : public Base
{
public:
void print() { ....}
D2 operator * (D1 & d) { ..... }
D2 operator * (D2 & d) { ..... }
private:
double j;
double m;
};
这是我最初的设计,但我知道它不会起作用,所以我会 实现这一点的好设计是什么?有没有办法使用模板来实现这一点? 谢谢!
【问题讨论】:
-
您是否考虑过一个外部
operator*,它不是任何一个类的方法,但可能是两者的朋友?
标签: c++ templates inheritance operator-overloading