相关疑难解决方法(0)

如何直接将成员函数绑定到Visual Studio 11中的std :: function?

我可以轻松地将成员函数绑定到a std::function带有capture子句的lambda表达式.

class Class
{
    Class()
    {
        Register([=](int n){ Function(n); });
    }

    void Register(std::function<void(int)> Callback)
    {

    }

    void Function(int Number)
    {

    }
};
Run Code Online (Sandbox Code Playgroud)

但我想直接绑定它们,如下所示.

// ...
Register(&Class::Function);
// ...
Run Code Online (Sandbox Code Playgroud)

我认为根据C++ 11标准,这应该得到支持.但是,在Visual Studio 11中,我收到了这些编译器错误.

错误C2440:'换行':无法从'int'转换为'Class*'

错误C2647:'.*':无法在'int'上取消引用'void(__thiscall Class ::*)(int)'

c++ member-functions c++11 std-function

19
推荐指数
4
解决办法
4万
查看次数

矢量std ::功能与不同的签名

我有许多具有不同签名的回调函数.理想情况下,我想将它们放在一个向量中,并根据某些条件调用适当的一个.

例如

void func1(const std::string& value);

void func2(const std::string& value, int min, int max);

const std::vector<std::function<void(std::string)>> functions
{
    func1,
    func2,
};
Run Code Online (Sandbox Code Playgroud)

我意识到上述情况是不可能的,但我想知道是否有任何我应该考虑的替代方案.我还没有找到任何东西,我已经尝试过,std::bind但没有成功实现我想要的东西.

这样的事情可能吗?

c++ stdvector c++11 std-function

14
推荐指数
2
解决办法
1万
查看次数

标签 统计

c++ ×2

c++11 ×2

std-function ×2

member-functions ×1

stdvector ×1