将函数从结构传递给函数

时间:2014-02-16 00:32:53

标签: c++ boost

如何使这项工作?我看到的错误是 错误C2064:术语不评估为采用2个参数的函数

我做错了什么?

#include <boost\function.hpp>

int AddVariables(boost::function<int(int, int)>func, int a, int b)
{
    return func(a, b);
}

struct TestStruct
{
    void Run()
    {
        AddVariables(&TestStruct::Function1, 2, 3);
    }

    int Function1(int a, int b)
    {
        return a + b; 
    }
};

1 个答案:

答案 0 :(得分:1)

Function1是一个成员函数,所以你需要一个this指针来调用它。使用bind创建一个自动应用this指针的仿函数:

AddVariables(boost::bind(&TestStruct::Function1, this, _1, _2), 2, 3);