【发布时间】:2012-02-07 15:29:28
【问题描述】:
我正在尝试学习如何最好地使用 std::function 和 std::bind 工具 在标准库中 - 我对 TR1 版本感兴趣,因为这就是我 目前可用,我不知道 TR1 实现和 C++11 实现之间的差异(如果有的话)。
因此,为了练习,我设置了一个简单的“调度程序”。 我想要的是能够根据稍后在运行时做出的一些决定执行调度程序的任何功能。我将我的班级设置为具有通用功能数据 像这样的成员:
class PoorDispatcher
{
...
private:
std::tr1::function<void()> m_f;
}
然后我将我真正想调用的函数分配给数据成员,类似于下面
...
m_f = std::tr1::bind(some_func, param1, param2, param3);
...
// then the call
m_f(); // SUCCESS
以上允许我成功调用我想要的函数,但我不确定这是正确的做法。问题:
- 上述使用场景是否“正常”?有没有更好的选择?
- 上述方法在尝试绑定到返回某些内容的函数时会出现问题。如何检索返回值? (在我的愚蠢中,我厌倦了强制转换函数对象而没有成功)
【问题讨论】: