我在上课课
Class Operation {
virtual void execute(Operation, OperationCallback) = 0
}
带有回调
using OperationCallback = std::function<void(Error)>;
以及类似的30个不同的类
InsertOperation : public Operation
EditOperation : public Operation
每个实现的对象都执行并在操作结束时设置回调
我使用
执行操作void ExecuteOperation(Operation operation, OperationCallback operationCallback){
operation->execute(operation, operationCallback);
}
我想要一个名为Result的新回调,其中包含一个错误和一个ID
Class Result{
Error error
int id;
Error getError()
Int getId()
}
新的回调将仅在某些操作中使用,而不是在所有操作中使用
但是我想重用现有代码,因此不必重复使用很多方法来使用新的回调
避免重复
using OperationWithResultCallback = std::function<void(Result)>;
void ExecuteOperationWithResult(Operation operation, OperationCallback operationCallback)
{
operation-> executeWithResult(operation, operationCallback);
}
In Operation Classs
virtual void executeWithResult(Operation, OperationWithResultCallback) = 0
Result可能有一个扩展Error的选项,但随后我将不得不更改以在各处使用引用&Error
我也可以将ID添加到Error类本身,但是我想避免这种情况。
还有其他方法可以只在需要的操作中使用Result,但仍将Error参数保留在各处吗?