我想要一组可互换的类来对数据集执行操作。我“认为”我正在尝试做的事情叫做多态性,但我不确定。
这是我正在尝试做的一个例子。我想创建一个包含初始值的对象,然后初始化另一个类以使用第一个类中的数据并使用 exec 执行操作,然后用另一个递归类重复此操作。
我希望能够改变操作的顺序,想法是任何类都可以调用 exec(),它总是返回 unsigned long。 init() 可能不同,但会在初始化期间调用,不会在递归类中访问。
谢谢,
class operationsObject {
public:
virtual unsigned long exec (void) =0;
};
class addObject: public operationsObject {
private:
unsigned long valueA, valueB;
public:
void init(unsigned long a, unsigned long b)
{valueA = a; valueB = b;}
unsigned long exec()
{return valueA + valueB;}
};
class subtractObject: public operationsObject {
private:
operationsObject *obj;
unsigned long valueA;
public:
void init(unsigned long a, operationsObject *o)
{valueA = a; obj = o;}
unsigned long exec()
{return obj->exec() - valueA;}
};
class multiplyObject: public operationsObject {
private:
operationsObject *obj;
unsigned long valueA, valueB;
public:
void init(unsigned long a, unsigned long b, operationsObject *o)
{valueA = a; valueB = b; obj = o;}
unsigned long exec()
{return obj->exec() * valueA * valueB;}
};
int main(){
operationsObject *op1 = new addObject;
operationsObject *op2 = new subtractObject;
operationsObject *op3 = new multiplyObject;
op1->init(4,5);
op2->init(4, op1);
op3->init(1, 2, op2);
unsigned retVal = op3->exec();
}
最佳答案
您的描述听起来您可能想要检查以下设计模式:Chain of Responsibility .
我可能会想到这样的事情:
- 命令接口(interface)/抽象基类与
- 公共(public)方法
exec
(非虚拟!)调用 - protected 抽象虚方法
execLocal
实现您正在寻找的行为。
现在,exec
可以定义为:
def exec(param):
self.execLocal(param)
if self.hasNext():
self.next.exec(param)
关于c++ - 如何递归访问不同的类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5177951/