Che*_*tor 4 c++ lambda function-pointers
......为前一个道歉
在C++中我们如何执行以下操作
// fundamental language construct
type name = value ;
// for example
int x = y;
Run Code Online (Sandbox Code Playgroud)
用函数指针?
typedef (char)(*FP)(unsigned);
// AFAIK not possible in C++
FP x = y ;
Run Code Online (Sandbox Code Playgroud)
我可以用lambdas:
FP x = []( unsigned k) -> char { return char(k); }
Run Code Online (Sandbox Code Playgroud)
但我不知道如何在没有lambda的情况下做到这一点.有任何想法吗?
n. *_* m. 12
只要可以编写typedef,就可以使用几乎相同的语法编写不带typedef的变量声明。
例:
// typedef
typedef char(*FP)(unsigned);
FP x = y ;
// no typedef
char(*x)(unsigned) = y;
Run Code Online (Sandbox Code Playgroud)
删除typedef关键字,您将获得一个变量声明。如果需要,可以在其上拍一个初始化。
Gui*_*cot 12
您可以使用auto:
auto fptr = &f;
Run Code Online (Sandbox Code Playgroud)
它跳过了对typedef的需求,并保留了一个不错的语法。
它几乎和Lambdas一样,但我觉得很难读:
void my_int_func(int x)
{
std::cout << "ther param is: " << x << std::endl;
}
//
int main(int argc, char *argv[])
{
void (*foo)(int) = my_int_func;
foo(1);
Run Code Online (Sandbox Code Playgroud)
但我不知道如何在没有 lambda 的情况下做到这一点。有任何想法吗?
只是不要使用 lambda,而是使用函数:
typedef char(*FP)(unsigned);
char foo(unsigned){ return 0;}
int main() {
FP x = foo;
}
Run Code Online (Sandbox Code Playgroud)
函数指针 typedef 相当讨厌,如果你能更好地使用using:
using FP = char(*)(unsigned);
Run Code Online (Sandbox Code Playgroud)