无需在其他地方声明函数即可使用函数指针的任何方法

问题描述 投票:0回答:2

我想在设置函数指针的值时声明一个函数。

TypeScript 等效项:

let fp: () => void;

fp = () => {
  console.log("Hello from inline function declaration!");
};

我尝试在网上查找,但似乎找不到与我要查找的内容相关的任何内容。我认为这是不可能的,但如果是的话,这对我正在从事的项目将非常有帮助。我知道这可能是一个愚蠢的问题,但我真的很想知道答案。

c++ function function-pointers
2个回答
0
投票

没有状态的 lambda 可以转换为函数指针。您甚至可以使用一元

+
运算符强制转换,如

auto lambda = []() { do_something(); };
auto function_ptr = +[]() { do_something(); };

但是普通的隐式转换也可以。

所以这大致就是您想要的。

#include <iostream>

extern void (*fp)();

void (*fp)() = []() {
    std::clog << "Hello from inline function declaration!\n";
};


int main()
{
    fp();
}

0
投票

std::function
lambda 表达式 基本上可以让你拥有这种语法

std::function<void()> fp;

fp = [](){ console.log("Hello from inline function declaration!"); };

std::function
确实使用类型擦除,因此原始函数指针会产生开销成本,但这也可以让您使用有状态函子。

© www.soinside.com 2019 - 2024. All rights reserved.