如何使用另一个类的公共成员函数作为参数调用线程

加博尔·马绍尔(GáborMarschall)

我已经检查了具有成员函数和类似帖子的“启动线程”,并按照说明进行了操作,但是却收到以下错误消息:

'std :: invoke':找不到匹配的重载函数

串行端口

#include <array>
#include <string>

class AudioClass
{
public:
    void playAudio(std::array<std::string, 11> turretDetectionWavFiles, std::array<std::string, 6> turretActivationWavFiles,
        std::array<std::string, 4> turretSearchingWavFiles, std::array<std::string, 16> turretPowerDownWavFiles, std::array<std::string, 3> turretAttackWavFiles, std::array<std::string, 11> turretMovedWavFiles,
        std::array<std::string, 12> turretDie);
};

Main.cpp

#include <iostream>
#include <array>
#include <string>
#include <thread>
#include "SerialPort.h"

std::array<std::string, 11> turretDetectionWavFiles{ "alarm.wav", "alert.wav",  "active.wav", "turret_active_1.wav", "turret_active_2.wav", "turret_active_3.wav", "turret_active_4.wav", "turret_active_5.wav",
                                          "turret_active_6.wav", "turret_active_7.wav", "turret_active_8.wav" };
std::array<std::string, 6> turretActivationWavFiles{ "turret_deploy_1.wav", "turret_deploy_2.wav", "turret_deploy_3.wav", "turret_deploy_4.wav", "turret_deploy_5.wav",
                                           "turret_deploy_6.wav" };
std::array<std::string, 4> turretSearchingWavFiles{ "turret_search_1.wav", "turret_search_2.wav", "turret_search_3.wav", "turret_search_4.wav" };

std::array<std::string, 16> turretPowerDownWavFiles{ "turret_disabled_1.wav", "turret_disabled_2.wav", "turret_disabled_3.wav", "turret_disabled_4.wav", "turret_disabled_5.wav",
                                           "turret_disabled_6.wav", "turret_disabled_7.wav", "turret_disabled_8.wav", "turret_retire_1.wav", "turret_retire_2.wav",
                                           "turret_retire_3.wav", "turret_retire_4.wav", "turret_retire_5.wav", "turret_retire_6.wav", "turret_retire_7.wav", "retract.wav" };

std::array<std::string, 3> turretAttackWavFiles{ "turret_fire_4x_01.wav", "turret_fire_4x_02.wav", "turret_fire_4x_03.wav" };

std::array<std::string, 11> turretMovedWavFiles{ "turretlaunched10.wav", "turret_pickup_1.wav", "turret_pickup_2.wav", "turret_pickup_3.wav", "turret_pickup_4.wav", "turret_pickup_5.wav",
                                      "turret_pickup_6.wav", "turret_pickup_7.wav", "turret_pickup_8.wav", "turret_pickup_9.wav", "turret_pickup_10.wav" };

std::array<std::string, 12> turretDie{ "sp_sabotage_factory_good_fail01.wav", "sp_sabotage_factory_good_fail04.wav", "sp_sabotage_factory_good_fail06.wav",
                            "sp_sabotage_factory_good_fail05.wav", "sp_sabotage_factory_good_fail07.wav", "turret_tipped_1", "turret_tipped_2", "turret_tipped_3",
                            "turret_tipped_4", "turret_tipped_5", "turret_tipped_6", "die.wav" }; 


void AudioClass::playAudio(std::array<std::string, 11> turretDetectionWavFiles, std::array<std::string, 6> turretActivationWavFiles,
    std::array<std::string, 4> turretSearchingWavFiles, std::array<std::string, 16> turretPowerDownWavFiles, std::array<std::string, 3> turretAttackWavFiles, std::array<std::string, 11> turretMovedWavFiles,
    std::array<std::string, 12> turretDie)
{
    //do something
}

void exampleReceiveData()
{
    std::thread t(AudioClass::playAudio, (turretDetectionWavFiles, turretActivationWavFiles, turretSearchingWavFiles, turretPowerDownWavFiles, turretAttackWavFiles, turretMovedWavFiles, turretDie));
}

int main()
{
    exampleReceiveData();
}

我也尝试过这种方式,并得到相同的错误:

std::thread t(&AudioClass::playAudio, AudioClass());
施瓦特

这个指针需要被作为第一个参数传递:

void exampleReceiveData(void)
{
    AudioClass ac;    
    std::thread t(&AudioClass::playAudio, &ac, turretDetectionWavFiles, 
                  turretActivationWavFiles, turretSearchingWavFiles, 
                  turretPowerDownWavFiles, turretAttackWavFiles, 
                  turretMovedWavFiles, turretDie);
    t.join();
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用一个类的构造函数作为Java中另一个类的对象的参数?

来自分类Dev

在另一个类的构造函数中使用一个类作为参数

来自分类Dev

无效使用非静态成员函数-类成员函数调用另一个类成员函数

来自分类Dev

如何在react native中使用另一个类的参数调用函数?

来自分类Dev

在类中以另一个函数作为参数调用函数

来自分类Dev

如何从另一个函数调用属于类成员的函数?

来自分类Dev

如何在Matlab的另一个m文件中调用类的成员函数?

来自分类Dev

如何从另一个类调用成员指针函数?

来自分类Dev

如何调用在另一个函数中作为参数传递的函数

来自分类Dev

如何在另一个函数内调用多个函数作为参数?

来自分类Dev

如何将以args作为参数的成员函数传递给另一个成员函数?

来自分类Dev

如何将非静态成员函数作为模板参数传递给另一个成员函数?

来自分类Dev

使用另一个函数作为参数的Javascript函数调用

来自分类Dev

std :: async与成员函数,持有另一个成员函数作为参数

来自分类Dev

std :: async与成员函数,持有另一个成员函数作为参数

来自分类Dev

如何将一个类的函数作为另一个类的另一个函数的参数传递

来自分类Dev

如何从另一个类java调用带有参数作为对象的方法?

来自分类Dev

从一个公共类向另一个公共类调用静态参数

来自分类Dev

从一个公共类向另一个公共类调用静态参数

来自分类Dev

如何将另一个类的函数作为参数传递?

来自分类Dev

使用另一个QML对象作为参数从C ++调用QML函数

来自分类Dev

如何将对A类的非常量公共成员m的访问权限限制为包含A作为非常量成员的另一个B类的const?

来自分类Dev

如何从另一个嵌套类中调用某个封闭类的嵌套类的函数指针成员的值?

来自分类Dev

使用类引用来修改另一个类中的公共成员

来自分类Dev

使用类引用来修改另一个类中的公共成员

来自分类Dev

如何使用函数的参数作为函数内部另一个对象的对象?

来自分类Dev

Haskell-如何使用返回“ Maybe Int”作为另一个函数的参数的函数?

来自分类Dev

PHP如何从另一个类调用函数?

来自分类Dev

如何从另一个类调用函数?

Related 相关文章

  1. 1

    如何使用一个类的构造函数作为Java中另一个类的对象的参数?

  2. 2

    在另一个类的构造函数中使用一个类作为参数

  3. 3

    无效使用非静态成员函数-类成员函数调用另一个类成员函数

  4. 4

    如何在react native中使用另一个类的参数调用函数?

  5. 5

    在类中以另一个函数作为参数调用函数

  6. 6

    如何从另一个函数调用属于类成员的函数?

  7. 7

    如何在Matlab的另一个m文件中调用类的成员函数?

  8. 8

    如何从另一个类调用成员指针函数?

  9. 9

    如何调用在另一个函数中作为参数传递的函数

  10. 10

    如何在另一个函数内调用多个函数作为参数?

  11. 11

    如何将以args作为参数的成员函数传递给另一个成员函数?

  12. 12

    如何将非静态成员函数作为模板参数传递给另一个成员函数?

  13. 13

    使用另一个函数作为参数的Javascript函数调用

  14. 14

    std :: async与成员函数,持有另一个成员函数作为参数

  15. 15

    std :: async与成员函数,持有另一个成员函数作为参数

  16. 16

    如何将一个类的函数作为另一个类的另一个函数的参数传递

  17. 17

    如何从另一个类java调用带有参数作为对象的方法?

  18. 18

    从一个公共类向另一个公共类调用静态参数

  19. 19

    从一个公共类向另一个公共类调用静态参数

  20. 20

    如何将另一个类的函数作为参数传递?

  21. 21

    使用另一个QML对象作为参数从C ++调用QML函数

  22. 22

    如何将对A类的非常量公共成员m的访问权限限制为包含A作为非常量成员的另一个B类的const?

  23. 23

    如何从另一个嵌套类中调用某个封闭类的嵌套类的函数指针成员的值?

  24. 24

    使用类引用来修改另一个类中的公共成员

  25. 25

    使用类引用来修改另一个类中的公共成员

  26. 26

    如何使用函数的参数作为函数内部另一个对象的对象?

  27. 27

    Haskell-如何使用返回“ Maybe Int”作为另一个函数的参数的函数?

  28. 28

    PHP如何从另一个类调用函数?

  29. 29

    如何从另一个类调用函数?

热门标签

归档