Fly*_*179 5 c++ struct function-pointers
例如:
struct Foo
{
int bar;
int (*baz)(int);
};
int testFunc(int x)
{
return x;
}
Foo list[] = {
{ 0, &testFunc },
{ 1, 0 } // no func for this.
};
Run Code Online (Sandbox Code Playgroud)
在这个例子中,我宁愿将函数直接放入list []初始化器,而不是使用指向其他地方声明的函数的指针; 它将相关代码/数据保存在同一个地方.
有办法做到这一点吗?我尝试了我能想到的每一种语法,无法让它发挥作用.
如果你的意思是:
Foo list[] = {
{ 0, int (*)(int x) { return x;} },
{ 1, 0 } // no func for this.
};
Run Code Online (Sandbox Code Playgroud)
那么,不,这是不可能的。您正在谈论匿名函数,C++ 尚不支持(截至 2011 年 8 月)。
C++0x 正在添加对lambda 函数的支持,这几乎是相同的事情,您的语法可能类似于:
Foo list[] = {
{ 0, [](int x) { return x; } },
{ 1, 0 }
};
Run Code Online (Sandbox Code Playgroud)
但是,如果您的目的只是使代码和数据保持接近,那么只需使它们保持接近(相同的 C 源文件,代码紧接在数据之前)。