【发布时间】:2015-11-07 00:17:26
【问题描述】:
我正在处理可能无效的原始函数指针(指向不正确的函数)/如果我正在与更新交互的应用程序(源不可用)为 null。我想创建一个继承 std::function 的类,它将重载 operator() 并在调用该类时向 stdout 发送消息,然后调用原始函数指针。这样做是为了让我能够轻松地隔离出哪个函数会因为空调用而崩溃。我不担心开销,因为只有使用 _DEBUG 才能在调试模式下使用它
因为 STL 实现取决于编译器,并且从它继承通常是一个坏主意,所以我不确定如何执行此操作。我使用的编译器是 MSVC (2015)。
我该怎么做?
【问题讨论】:
-
那你为什么不写一个包装器呢?
-
因为在发布模式下我希望它是原始的 std::function,所以编写包装器需要我实现 std::function 具有的所有功能。例如:#ifdef _DEBUG using FunctionPointer = DebugFunction; #else using FunctionPointer = std::function; #endif
标签: c++ pointers stl function-pointers std-function