C ++使用std :: function从名称空间中返回函数

提姆

我正在尝试使用来返回函数,std::function<type>但遇到输入问题...请参见代码:

#include "LossFunction.hpp"

LossFunction::LossFunction() {
}

LossFunction::LossFunction(int functionType) {
    this->functionType = functionType;
    this->fun = this->getLossFunction();
}

LossFunction::~LossFunction() {
}

std::function<float(Input,Output)> LossFunction::getLossFunction() {
    switch (this->functionType){
        case 0:
            return this->f1;
            break;
        default:
            return this->f1;
            break;
    }
}

编译时出现以下错误:

LossFunction.cpp: In member function ‘std::function<float(Input, Output)>           LossFunction::getLossFunction()’:
LossFunction.cpp:18:17: error: cannot convert ‘LossFunction::f1’ from type     ‘float (LossFunction::)(Input, Output)’ to type ‘std::function<float(Input,  Output)>’
return this->f1;
             ^
LossFunction.cpp:21:17: error: cannot convert ‘LossFunction::f1’ from type ‘float (LossFunction::)(Input, Output)’ to type ‘std::function<float(Input, Output)>’
return this->f1;
谢尔盖·卡里尼琴科(Sergey Kalinichenko)

问题不在于名称空间,而在于独立功能和成员功能之间的区别。独立的函数可以传递给std::function的构造函数,但成员函数需要bind其第一个参数中的a,如下所示:

switch (this->functionType){
    case 0:
        return std::bind(&LossFunction::f1, this, _1, _2);
        break;
    default:
        return std::bind(&LossFunction::f1, this, _1, _2);
        break;
}

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

C ++如何在没有std :: function的情况下声明函数返回函数?

来自分类Dev

C ++如何在没有std :: function的情况下声明函数返回函数?

来自分类Dev

C ++使用名称空间中的符号

来自分类Dev

在Visual C ++中的不同文件和不同名称空间中使用函数

来自分类Dev

从std :: function继承构造函数时,“函数返回函数”

来自分类Dev

在 C++ 的命名空间中使用函数名?

来自分类Dev

在名称空间中使用函数而没有反斜杠

来自分类Dev

在名称空间中使用参数声明函数

来自分类Dev

在名称空间中使用函数而没有反斜杠

来自分类Dev

使用std :: async c ++ 11返回std:vector

来自分类Dev

如何使用C ++ 11 Move语义从函数返回std :: vector?

来自分类Dev

无法使用C#删除xml文件名称空间中的xr:uid属性

来自分类Dev

C ++使用命名空间标准,使用std :: xxx还是仅使用std :: x?

来自分类Dev

如何将函数(std :: bind)包装到名称空间中?

来自分类Dev

命名空间中的C ++ std向量初始化

来自分类Dev

在Lua中从C注册函数时,如何将模块嵌套到名称空间中?

来自分类Dev

如何强制C ++从全局名称空间中选择函数?

来自分类Dev

C ++:在匿名名称空间中声明函数原型的正确方法是什么?

来自分类Dev

递归std :: function vs递归匿名名称空间函数。使用哪一个?

来自分类Dev

名称空间std添加了什么?(C ++)

来自分类Dev

关于在 C++ 中使用命名空间 std

来自分类Dev

C#如何在数组中使用FirstOrDefault却无法在名称空间中使用System.Linq?

来自分类Dev

在命名空间中使用全局命名空间中的函数

来自分类Dev

C ++返回指针与使用std :: move返回本地对象

来自分类Dev

使用object中的方法使用std :: bind和std :: function.target调用C样式的函数地址

来自分类Dev

C#BinaryFormatter-使用另一个名称空间中的对象反序列化

来自分类Dev

在名称空间中使用特征

来自分类Dev

在名称空间中使用特征

来自分类Dev

mingw:使用-std = c ++ 11编译时找不到函数

Related 相关文章

  1. 1

    C ++如何在没有std :: function的情况下声明函数返回函数?

  2. 2

    C ++如何在没有std :: function的情况下声明函数返回函数?

  3. 3

    C ++使用名称空间中的符号

  4. 4

    在Visual C ++中的不同文件和不同名称空间中使用函数

  5. 5

    从std :: function继承构造函数时,“函数返回函数”

  6. 6

    在 C++ 的命名空间中使用函数名?

  7. 7

    在名称空间中使用函数而没有反斜杠

  8. 8

    在名称空间中使用参数声明函数

  9. 9

    在名称空间中使用函数而没有反斜杠

  10. 10

    使用std :: async c ++ 11返回std:vector

  11. 11

    如何使用C ++ 11 Move语义从函数返回std :: vector?

  12. 12

    无法使用C#删除xml文件名称空间中的xr:uid属性

  13. 13

    C ++使用命名空间标准,使用std :: xxx还是仅使用std :: x?

  14. 14

    如何将函数(std :: bind)包装到名称空间中?

  15. 15

    命名空间中的C ++ std向量初始化

  16. 16

    在Lua中从C注册函数时,如何将模块嵌套到名称空间中?

  17. 17

    如何强制C ++从全局名称空间中选择函数?

  18. 18

    C ++:在匿名名称空间中声明函数原型的正确方法是什么?

  19. 19

    递归std :: function vs递归匿名名称空间函数。使用哪一个?

  20. 20

    名称空间std添加了什么?(C ++)

  21. 21

    关于在 C++ 中使用命名空间 std

  22. 22

    C#如何在数组中使用FirstOrDefault却无法在名称空间中使用System.Linq?

  23. 23

    在命名空间中使用全局命名空间中的函数

  24. 24

    C ++返回指针与使用std :: move返回本地对象

  25. 25

    使用object中的方法使用std :: bind和std :: function.target调用C样式的函数地址

  26. 26

    C#BinaryFormatter-使用另一个名称空间中的对象反序列化

  27. 27

    在名称空间中使用特征

  28. 28

    在名称空间中使用特征

  29. 29

    mingw:使用-std = c ++ 11编译时找不到函数

热门标签

归档