当前位置: 首页 > 知识库问答 >
问题:

将类的成员函数传递给std::thread[重复]

党博超
2023-03-14

我在代码中使用STD::Thread时遇到问题:

Class Timer
{
...
public:
    void Start(bool Asynch = true)
    {
        if (IsAlive())
        {
            return;
        }
        alive = true;
        repeat_count = call_number;
        if (Asynch)
        {
            t_thread = std::thread(&ThreadFunc, this);
        }
        else
        {
            this->ThreadFunc();
        }
    }
    void Stop()
    {
        alive = false;
        t_thread.join();
    }
...
}

我得到以下错误:

std::thread ThreadReturner()
{
    return std::thread([=] { ThreadFunc(); });
}
...
t_thread = ThreadReturner();

我的问题看起来像是重复的,但只有一点不同,在另一个问题的答案中,std::Thread是在类声明或实现之外使用的,它是在main()中使用的,在这种情况下,指定范围对我来说是有意义的,但当std::Thread在类内部调用时就没有意义了。这是我看到的唯一区别,也是为什么我做了这个线程,很抱歉可能会重复。

共有1个答案

吴驰
2023-03-14

您应该指定范围

&Timer::ThreadFunc
 类似资料:
  • 我想通过包装C 11中的std::thread类来使用我自己的Thread实现,这样我就可以像我想要的那样处理异常。 这是我的包装类: 如果没有争论,它的效果相当不错: …但如果我尝试传递可变参数: ...我在编译时收到一个错误: buildroot-2014.02/output/host/usr/i586-buildroot-linux-uclibc/include/c /4.8.2/funct

  • 我正在尝试设置一个“事件接收器”类,将GLFW回调封装到用户可以从中继承的类中,但在将基类成员函数传递到GLFW“set callback”函数中时遇到问题。 这本质上提供了一个带有纯虚拟函数的基类,供用户继承和重写,以便在事件发生时提供自己的逻辑。用户定义的子类将被传递到更大的“应用程序框架”类中,该类将进行必要的调用以设置GLFW回调函数。 当然,您不能将成员函数作为函数参数传递,因为您必须提

  • 我编写了一个代码来传递函数指针列表(按其名称)作为参数。但我有错误。你能解释为什么我在做地图时有错误吗? 错误: 34:18:错误:无法将'void(Bar::)(int, int)'转换为'std::map, void(*)(int, int) 35:18:错误:无法将“无效(foo::)(整数,整数)”转换为“标准::映射,无效(*)(整数,整型) 41:70:错误:没有用于调用“std::v

  • 我试图构造一个包含可选闭包的表。当我尝试实例化表的实例时,传递闭包的成员函数,我会得到一个编译错误。 从错误 msg 中可以看出,成员函数无法转换为可选的成员函数。我不明白为什么不;Int 或其他类型可以很容易地转换为可选类型。 无法转换类型为“”的值-

  • 我正在尝试按房间类别(手术室或技术室)返回过滤后的

  • 问题内容: 这个问题已经在这里有了答案 : 如何将变量和数据从PHP传递到JavaScript? (20个答案) 5年前关闭。 我正在尝试将PHP数组变量转换为JavaScript变量。 这是我的代码: 我无法获得PHP数组的价值。 我该如何解决这个问题? 问题答案: 在下面的示例中,您具有一个PHP数组,然后首先通过一个PHP数组创建一个JavaScript数组: