我有一个在应用程序中传递的结构,其中包含一堆回调函数:
typedef struct {
std::function<void (void)> f1;
std::function<void (int)> f2;
std::function<int (float *)> f3;
// ... and so on
} CallbackTable;
我通过将不同的函数绑定到各种回调来处理应用程序内的状态控制,具体取决于当前的系统状态;效果很好。
我现在想做的是添加几个额外的回调,其签名包含可变数量的参数,类似于 printf:例如,
std::function<int (const char * format, ...)> printToStdOut;
This doesn't工作。在 Visual C++ 中,我收到一条错误消息:
error C2027: use of undefined type 'std::_Get_function_impl<_Fty>'
我仍在摸索 C++ 语法的这一领域,并且非常感谢任何关于我应该如何从这里开始的建议。我的首要目标是能够按照以下方式拨打电话:
myCallbackTable.printToStdOut("I've just eaten %d bananas\r\n", nBananas);
...并根据系统状态将输出定向到控制台、文件或 GUI 窗口。