小编Han*_*ans的帖子

保存函数指针+参数供以后使用

我有这个问题,其中保存了C++函数指针,以及一组用于调用它的参数,以便以后可以调用它.调用代码不知道函数的类型和参数.保存和调用函数指针和参数在我的应用程序中非常重要.界面应如下所示:

void func( int a, char * b );
call_this_later( func, 5, "abc" );
Run Code Online (Sandbox Code Playgroud)

一个简单的解决方案是将所有这些信息放在仿函数中,每个被调用的函数需要不同的typedef.C++ 11允许我使用可变参数模板来做到这一点,所以没关系.

由于函数的类型在调用时是未知的,因此似乎有必要为这些函子创建一个虚拟基类,并使用虚函数调用来调用函子.虚函数调用+堆分配的性能开销太高(我用尽可能少的汇编指令来推动实现这个习惯用法的界限).所以我需要一个不同的解决方案

有任何想法吗?

c++ c++11

7
推荐指数
1
解决办法
1811
查看次数

变量函数(没有参数!)

假设您想在C++ 0x中执行此操作:

size_t count_int() { return 0; }
template<typename T, typename... Tn>
size_t count_int(T a0, Tn... an) {
    size_t n = is_integer<T>::value ? 1 : 0;
    return n + count_int(an...);
}
Run Code Online (Sandbox Code Playgroud)

很好,但感觉没有必要传递参数.不幸的是,这不起作用:

size_t count_int() { return 0; }
template<typename T, typename... Tn>
size_t count_int() {
    size_t n = is_integer<T>::value ? 1 : 0;
    return n + count_int<Tn...>();
}
Run Code Online (Sandbox Code Playgroud)

GCC抱怨错误:在倒数第二行中调用'count_int()'没有匹配函数.为什么以及如何解决这个问题?谢谢.

templates c++11

5
推荐指数
1
解决办法
167
查看次数

标签 统计

c++11 ×2

c++ ×1

templates ×1