我使用 C# 开发已经超过 15 年了,现在我开始使用 C++ 开发。
我的问题是我试图理解 C++ 中的回调或函数指针。我认为下面的例子是我必须如何在方法中使用函数指针
MyClass:MyMethod
:
// callback function
int foo(char x) { [...] }
void MyAnotherClass::AnotherMethod(int a, int b, int(*func_ptr)(char))
{
// Compute x using parameters a and b.
char x = [ ... ];
int e = func_ptr(x);
}
void MyClass:MyMethod(int a, int b, int c, int d)
{
MyAnotherClass::AnotherMethod(a, b, &foo);
}
但是,我需要使用
foo
而不是 foo2
函数:
int foo2(char x, int c, int d) { [...] }
参数
c
和 d
与方法 void MyClass:MyMethod(int a, int b, int c, int d)
中的参数相同。
一个选项可以是将这些参数传递给方法
MyAnotherClass::AnotherMethod
,并在该方法内,将它们传递到此处 int e = func_ptr(x, c, d);
。类似这样的东西:
void MyAnotherClass::AnotherMethod(int a, int b, int c, int d, int(*func_ptr)(char, int, int))
{
// Compute x using parameters a and b.
char x = [ ... ];
int e = func_ptr(x, c, d);
}
但是我想知道是否有可能不将参数
c
和d
传递给方法MyAnotherClass::AnotherMethod
,而是将它们传递给MyClass:MyMethod
中的函数指针。也许使用 lambda 函数。
这可能吗?
我不知道 lambda 函数是不是解决方案。
不要使用函数指针,而是使用
std::function<int(char)>
。