【发布时间】:2017-05-20 12:19:17
【问题描述】:
我希望对象具有一种调用函数的方法(但每个对象都应该有不同的函数来调用)。我将尝试通过展示一个示例来向您展示我的意思:
class Human
{
public:
void setMyFunction(void func); // specify which function to call
void callMyFunction(); // Call the specified function
};
void Human::setMyFunction(void func) // ''
{
myFunction = func;
}
void Human::callMyFunction() // ''
{
myFunction();
}
void someRandomFunction() // A random function
{
// Some random code
}
int main()
{
Human Lisa; // Create Object
Lisa.setMyFunction(); // Set the function for that object
Lisa.callMyFunction(); // Call the function specified earlier
}
这段代码(显然)不起作用,但我希望你能理解我要完成的工作。
制造,TPrammus
【问题讨论】:
-
你会想要使用std::function。
-
您要传递给类的函数的签名是相同的还是应该接受
int(int, int)、double(double)和void(int)...? -
你也可以使用function pointer。
-
@FrançoisAndrieux,看起来像简单的函数指针就可以了,这样效率更高,
than std::function。 -
@SergeyA 也许,但
std::function是处理此类问题时了解的重要工具,即使它不适合您。