比方说,我有,我想解方程的程序(像这样)指针和引用+运算符重载
Number x;
Func fw = x * 4 + x * x;
std::cout << fw(6.0) << "\n\n";
因此,我从写抽象基类,在这里我都开始我需要解决这个方程。
class Base
{
public:
Base(){};
virtual Base* operator*(Base& x) = 0;
virtual Base* operator*(double x) = 0;
virtual Base* operator+(Base& x) = 0;
};
和班级数
class Number : public Base
{
public:
virtual Base* operator*(Base& x);
virtual Base* operator*(double x);
virtual Base* operator+(Base& x);
};
和类Func键与拷贝构造函数(或者至少,我思,它的拷贝构造函数)
class Func: public Base
{
Base * func;
public:
Func(Base* other)
{
func = other;
}
Func(Base& other)
{
func = &other;
}
virtual Base* operator*(Base& x){}
virtual Base* operator*(double x){}
virtual Base* operator+(Base&){}
};
所以,我的问题。我的程序适用于x*x
或x*4
,但是当我尝试将它们结合使用时x*x + x*4
我遇到问题。
很明显(或者不是)什么is.After x*x
我的程序返回指针(基地*),并在我的重载运算符的问题,我只有(基地&)。 所以程序无法匹配任何重载的操作符。
下面是克利翁显示我binary operator + can't be applied to the expression of type Base* and Base*
因此,解决方案可以是重载操作一次,但与参数(基地*),但我希望有一个更好的办法来解决这个问题。在那儿?
例如,基本数据类型不支持直接添加float和int。取而代之的是一种促销,int在这种情况下是浮动的。也许你可以用类似的方式解决问题。将您的不同类型提升为相同类型,然后执行操作。 –