c ++函数将函数指针与默认函数一起使用

时间:2013-08-06 21:49:25

标签: c++ function pointers arguments default

假设我有以下功能

int watchVar(const char* var, const char* descriptor,
            Color (*colorfunc)(const char* var) = yellowColorFunc)

Color yellowColorFunc(const void* var){
    return Color::yellow();
}

我想重载watchVar以接受参数为charintfloat等的函数,但不想为每个函数创建默认颜色函数类型。

g ++给出了这个错误:

xpcc::glcd::Color (*)(const char*)' has type 'xpcc::glcd::Color(const void*)

除了声明colorfunc以获取空指针并强制调用者稍后自己投射参数之外,还有另一种方法吗?

由于

2 个答案:

答案 0 :(得分:4)

函数指针声明为const char *,但声明了yellowColorFunc const void *

答案 1 :(得分:2)

您的问题是,声明一个const char *yellowColorFun的函数指针需要const void *。如果c ++ 11可用,您可以使用std::function,如下所示:
auto colorFunc = std::function<int(const char *,const char *,std::function<Color(const char*)>)>();

你在评论中说你想使用int,float和其他人的函数,在这种情况下你应该做的是使用模板化函数,你真的不想使用void*'经常用c ++编写。