C ++使用可变参数模板绑定成员函数

古斯塔沃

我下面的示例使用可变参数模板在类中注册函数。注册单个函数是可行的,但是类成员函数呢?我尝试了std :: bind,但是这需要占位符,这不是一个选择,因为我不知道参数的数量。在C ++ 11中有没有一种简单的方法可以执行此操作,或者我是否必须为每个数量的参数实现register函数?

template<typename TReturn, typename... TArgs>
class Func {
    std::function<TReturn (TArgs...)> fn;

    template<typename TFunction, typename TObject>
    bool register(TFunction f, TObject obj){

    }

    bool register(std::function<TReturn (TArgs...)> f){
        fn = f;
        return true;
    }   
}
普拉丹

创建具有所需签名的lambda函数,并std::function从中构造对象。

template<typename TReturn, typename... TArgs>
class Func {
    std::function<TReturn (TArgs...)> fn;

    template<typename TFunction, typename TObject>
    bool Register(TFunction f, TObject obj){
        fn = [obj](TArgs... args){return (obj.*f)(args...);};
        return true;
    }

    bool Register(std::function<TReturn (TArgs...)> f){
        fn = f;
        return true;
    }   
}

(注意:成员函数指针需要与相应的对象,对象引用或指向适当类的对象的指针一起使用。如果TObject值类似于,则成员函数调用语法为(obj.*f)。如果TObject指针类似于,则语法会是(obj->*f)。)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

C ++:具有可变参数模板的成员函数指针参数

来自分类Dev

C ++中没有参数可变参数模板函数

来自分类Dev

用可变参数模板在C ++中包装函数指针

来自分类Dev

通过可变参数模板的C ++ 11构造函数继承

来自分类Dev

C ++:可变参数模板和函数重载

来自分类Dev

调用类内的函数的C ++ 11可变参数模板

来自分类Dev

通过可变参数模板的C ++ 11构造函数继承

来自分类Dev

C ++ 11可变参数模板函数存储

来自分类Dev

C ++可变参数模板:无法匹配函数

来自分类Dev

在C ++中使用可变参数模板迭代参数包

来自分类Dev

使用默认参数的C ++函数模板

来自分类Dev

c ++ 03:使用boost的可变参数模板

来自分类Dev

C ++模板元编程,带有可变参数模板以执行结构中特定成员的操作

来自分类Dev

C ++可变参数模板参数迭代

来自分类Dev

C ++模板函数别名作为可变参数模板参数

来自分类Dev

C ++模板函数别名作为可变参数模板参数

来自分类Dev

c ++ 11递归可变参数模板

来自分类Dev

可变参数模板和C数组

来自分类Dev

C ++可变参数模板基础

来自分类Dev

C ++可变参数模板产品

来自分类Dev

C ++可变参数模板推导失败

来自分类Dev

c ++ 11递归可变参数模板

来自分类Dev

C ++-从可变参数模板制作Tupple

来自分类Dev

用于评估指向成员的指针的 C++ 可变参数模板

来自分类Dev

C ++:如何在可变参数模板参数上调用带有类型参数的函数?

来自分类Dev

使用成员函数调用可变参数模板函数

来自分类Dev

C++ 可变数量的可变参数模板参数

来自分类Dev

在C ++中可变参数模板中是否有对函数参数实施类型限制的好方法?

来自分类Dev

std :: function到可变参数成员函数,然后绑定可变参数模板参数

Related 相关文章

热门标签

归档