gpt4 book ai didi

c++ - 指向函数的智能指针

转载 作者:太空狗 更新时间:2023-10-29 19:40:12 26 4
gpt4 key购买 nike

我正在尝试创建指向我的函数的智能指针。

我有这个功能:

double returnValue(int i){
return i;
}

创建原始指针非常简单:

double (*somePTR)(int) = &returnValue;

但是如何使智能指针指向函数,例如shared_ptr

auto someptr = std::make_shared<double>(&returnValue);

我尝试了很多选项,但没有任何效果。

最佳答案

我认为你的意思是一个智能函数指针,自 C++11 以来就有了 std::function,那么这个怎么样:

#include <functional>
#include <iostream>

double a(int i){
return i;
}

double b(int i){
return i * 2;
}

double c(double d, int i){
return i - d;
}


int main() {
std::function<double(int)> func = a;
std::cout << func(42) << std::endl;//Output 42

func = b;
std::cout << func(42) << std::endl;//Output 84

//func = c; //Error since c has a different signature (need one more argument), #type safety

func = std::bind(c, 5 ,std::placeholders::_1); //func stores the needed 2nd argument
std::cout << func(42) << std::endl;//Output 37

}

关于c++ - 指向函数的智能指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48323826/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com