我需要用C ++编写一个代表计算抽象的类。该类将具有将运行实际计算的函数。
class Calculation {
Calculation() {}
~Calculation() {}
Calculate(); //member function that runs a calculation
};
我需要该类能够表示不同种类的计算,并在调用Calculation::Calculate()
时运行不同的计算。在C ++中有什么好方法可以做到这一点?我只能将一些标志传递给构造函数,但这似乎不是一个好的解决方案。
答案 0 :(得分:3)
您可以使Calculate
虚拟并创建实现所需变化行为的子类。
答案 1 :(得分:2)
面向对象设计怎么样?
class Calculation
{
Calculation();
public:
virtual ~Calculation() {}
virtual int Calculate() = 0;
};
class Sum : public Calculation
{
int x, y;
public:
Sum(int x_, int y_) : x(x_), y(y_) {}
~Sum() {}
virtual int Calculate() { return x + y; }
};
答案 2 :(得分:0)
您应该查看Command Design Pattern。它通常用于在GUI系统中实现“撤销”操作,但非常适合于需要推迟执行实际操作的其他情况。
C ++实现通常使用一个抽象类(接口),其中一个抽象方法没有参数,然后为每个操作实现此接口。计算的参数绑定在派生类的构造函数中。然后,抽象类的实例以某种方式排队。当执行操作时,只需调用泛型,无参数方法即可调用。