对于家庭作业,我们需要使用多种不同的算法来修改各种图像,并使用我们的答案来格式化文档。我已经用C ++编写了算法代码,但是我想编写一个程序来修改图像并自动设置文档格式。为此,我想要一个具有以下形式的类:
class A { void f1(Image img) { // do something to the image } void f2(Image img) { // do something else to the image } public: void setFunction(bool choice) { if(choice) { // define this.operator() = f1 } else { // define this.operator() = f2 } } }
之所以这样做,是因为作业要求我们为图像计算不同的属性,但是大多数属性都是在问题中重复出现的。因此,我想编写一个单一的函数形式
void answerQuestion(Image img, A imgProcessor) { // load img, call imgProcessor(img) // and get the necessary properties from // img to answer the questions }
这样,在将
imgProcessor.setFunction(choice)
对象传递给imgProcessor
之前,我可以做类似answerQuestion
的操作。我想使用一个对象,因为问题分为多个部分,因此我希望imgProcessor
对象保留其余问题所需的一些信息。我不知道如何动态定义或重新定义operator()
方法,或者甚至不可能。当然,无论是重载调用运算符还是声明自己的方法,我都无所谓,但我希望能够以遍及代码的相同方式使用此调用。这在C ++中可能吗?
对于家庭作业,我们需要使用多种不同的算法来修改各种图像,并使用我们的答案来格式化文档。我已经用C ++编写了算法,但是我想写一个...
您必须以某种方式记住选择。在C ++中,函数指针和函数对象不参与重载解析,因此您不能actually