I already checked Start thread with member function and similar posts, and followed the instructions, but I get this error message:
'std::invoke': no matching overloaded function found
SerialPort.h
#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();
}
I also tried this way, and got the same error:
std::thread t(&AudioClass::playAudio, AudioClass());