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

为线程C使用类数组时出现奇怪错误

傅旺
2023-03-14

我试图通过一个向量来调用cook类,但是我不知道该怎么做。这是我的代码:

for (int i = 0; i < _numCooks; i++) {
     std::thread threadObj(this->_cooks[i].nextOrder, void);
    _threads.push_back(threadObj);
}

_cooks是一个类的向量,而我试图构建的函数是:

bool cooks::nextOrder()
{
    Margarita margarita(_cookOrder[0].pizzaSize);
    Regina regina(_cookOrder[0].pizzaSize);
    Fantasia fantasia(_cookOrder[0].pizzaSize);
    Americana americana(_cookOrder[0].pizzaSize);
    if (_cookOrder.empty())
        return (false);
    switch (_cookOrder[0].pizzaType) {
        case plazza::Margarita:
            return (makeOrder(margarita));
            break;
        case plazza::Regina:
            return (makeOrder(regina));
            break;
        case plazza::Fantasia:
            return (makeOrder(fantasia));
            break;
        case plazza::Americana:
            return (makeOrder(americana));
            break;
        default:
            return (false);

    }
}

然而,当我尝试编译时,我发现:

厨房。cpp:在成员函数“void Kitchen::make_pizza(标准:_cxx11::string,标准:_cxx11::string,Ipc)”中:厨房/厨房。cpp:148:59:错误:在'void'std::thread threadObj(此-

有办法解决吗?

共有1个答案

颜森
2023-03-14

根据这一点,std::thread构造函数的第一个参数应该满足可调用的概念。然后将可调用函数的后续参数作为附加参数传递给构造函数。

您正在传递一个成员函数。你需要一个类的实例来调用这个方法,但你没有提供。这就是这个错误对你的意义。

error: invalid use of non-static member function ‘bool cooks::nextOrder()’

使用lambda ie可能是最简单的。

for (int i = 0; i < _numCooks; i++) {
    _threads.emplace_back([&cook = _cooks[i]]() {
        cook.nextOrder();
     });
}
 类似资料:
  • 我在打印报告时出现了一个奇怪的错误。

  • 我有一个数据帧,我试图在条形图中绘制,但我面临一个奇怪的错误。 print语句给出: 然后是绘图代码:给出以下错误: ---------------------------------------------------------------------------KeyError回溯(最近一次调用上次)~/opt/anaconda3/lib/python3。8/现场包/熊猫/核心/索引/基础。

  • 问题内容: 我一直在使用PyCharm在PyQt中调试我的GUI。到目前为止,这确实非常成功,直到我在尝试调试gui时遇到一个奇怪的错误。我已经在脚本的开始以及各个点设置了一个断点,但是程序没有机会到达这一点。我也尝试删除所有断点并运行调试,但得到相同的结果。完整的回溯是: 有谁知道导致此错误的原因以及如何解决?当我正常运行代码(无需调试)时,不会遇到任何这些错误。 问题答案: 我遇到了同样的问题

  • 问题内容: 我正在使用jmh 使用maven并按照http://openjdk.java.net/projects/code- tools中 建议的命令行方法对一个简单的应用程序进行基准测试。成功设置并建立基准后,我可以使用avgt模式获得以下基准结果: 我不确定如何解释此输出,但我确定某些地方出了错…?知道什么或如何调试吗? 问题答案: JMH输出使用扩展的Unicode字符。特别是, ?10

  • 我在使用FPDF库生成pdf文件时得到了这个输出。 %PDF-1.3.0 obj 我的代码: