【问题标题】:Wrap intro std function包装介绍性标准功能
【发布时间】:2019-04-15 22:19:28
【问题描述】:

因此,我没有理由在此声明中使用 std::function。根据我读到的内容,可以使用std::function 编写以下语句。

这句话应该是怎样的?写着std::function

template <class T>
class CFooTemplate
{
public:
    typedef void (T::*FOO_STATE)(void);

解释一下,写作背后的逻辑。

【问题讨论】:

  • 我们没有足够的上下文来帮助您解决这个问题

标签: c++ std-function


【解决方案1】:

我不完全确定你的意思,但我会试一试。

这句话应该是怎样的?写着std::function

如果我理解正确,您的意思是这一行:typedef void (T::*FOO_STATE)(void);

在这种情况下,你应该写typedef std::function&lt;void()&gt; FOO_STATE;

这是因为您使用的是指向(成员)函数的指针。函数本身的签名是 void(),在 C++ 中相当于你使用的 void(void)

std::function 采用原始签名(例如void()void(void))并为该通用签名的任何函数创建多态包装器,无论是普通函数、成员函数还是类似函数的对象。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-07
    • 2020-03-01
    • 1970-01-01
    • 2014-03-06
    • 1970-01-01
    • 2016-12-16
    相关资源
    最近更新 更多