gpt4 book ai didi

c++ - 是否可以在 C++ 的结构声明中直接指定函数?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:36:35 26 4
gpt4 key购买 nike

例如:

struct Foo
{
int bar;
int (*baz)(int);
};

int testFunc(int x)
{
return x;
}

Foo list[] = {
{ 0, &testFunc },
{ 1, 0 } // no func for this.
};

在这个例子中,我宁愿将函数直接放入 list[] 初始化器中,而不是使用指向在别处声明的函数的指针;它将相关代码/数据保存在同一个地方。

有没有办法做到这一点?我尝试了所有我能想到的语法,但无法让它发挥作用。

最佳答案

如果你的意思是:

Foo list[] = {
{ 0, int (*)(int x) { return x;} },
{ 1, 0 } // no func for this.
};

那么,不,这不可能。你说的是 anonymous functions ,C++ 尚不支持的东西(截至 2011 年 8 月)。

C++0x 正在添加对 lambda functions 的支持,这几乎是一回事,您的语法可能类似于:

Foo list[] = {
{ 0, [](int x) { return x; } },
{ 1, 0 }
};

但是,如果您的目的只是让代码和数据靠近,那么就让它们靠近(同一个 C 源文件,代码紧挨在数据之前)。

关于c++ - 是否可以在 C++ 的结构声明中直接指定函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6923668/

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