相关疑难解决方法(0)

使用std :: bind时从std :: function获取函数指针

我正在尝试std::function与之配合使用std::bind,但我遇到了一些问题.

这有效:

#include <functional>
#include <iostream>

void print() {
    std::cout << 2;
}

int main() {
    std::function<void ()> foo = print;
    (*foo.target<void (*)()>())(); //prints 3
}
Run Code Online (Sandbox Code Playgroud)

这崩溃在第二行main:

#include <functional>
#include <iostream>

void print (int i) {
    std::cout << i;
}

int main() {
    std::function<void ()> foo = std::bind (print, 2);
    (*foo.target<void (*)()>())();
}
Run Code Online (Sandbox Code Playgroud)

我真的抱着std::function<void ()>并且需要能够返回功能; 不只是打电话给它.我希望用法是这样的:

#include <functional>
#include <iostream>

void print (int i) {
    std::cout << i;
}

int main() { …
Run Code Online (Sandbox Code Playgroud)

c++ bind function-pointers c++11

10
推荐指数
3
解决办法
2万
查看次数

标签 统计

bind ×1

c++ ×1

c++11 ×1

function-pointers ×1