c++ - 为回调函数传递参数

标签 c++

我有一个 functionA,它接受两个参数 => 一个回调函数和一个回调函数的参数。回调的参数可以建立在像 int 这样的类型或用户定义的类型中。我怎么能声明 functionA ?

eg:
void functionA(void (*handler)(TYPEA), TYPEA variableA)
{
  *handler(variableA);
}

TYPEA 可以是内置类型或用户定义类型。我应该在处理程序中使用 dynamic_casting 来根据回调函数将 typeA 转换为适当的类型(在这种情况下,typeA 应该是什么?)还是应该在这种情况下使用模板?

最佳答案

你可以这样传递:

#include <iostream>

template< typename A, typename B >
void foo( A a, B b )
{
    a( b );
}

void boo1( const int p )
{
    std::cout<<"boo( " << p << " )" << std::endl;
}

void boo2( const std::string p )
{
    std::cout<<"boo( " << p << " )" << std::endl;
}


int main()
{
    foo( boo1, 3 );
    foo( boo2, "abc" );
}

关于c++ - 为回调函数传递参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4644409/

相关文章:

c++ - 如何使用 Qt 从磁盘读取 XML 文件?

C++ 覆盖已经打开的文件

c++ - 这个指针一旦创建会发生什么?

c++ - Stack walk with inline asm for VC++

c++ - 在 C++ 中刷新流的后果和优缺点

c++ - 调用外部函数是否强制从内存加载?

c++ - Windows 上使用 C++ 的异步对话框

c++ - c++ 中的 crypt 返回不同的字符串(或根本没有字符串)

像素着色器问题中的 c++ DirectX 照明

c++ - super 慢的 C++ For 循环