Вот кусок кода, хочу его запустить отдельным потоком
if (keyLength == 1024)
rsa.generateKeys(RSA::RSA_1024);
else if (keyLength == 2048)
rsa.generateKeys(RSA::RSA_2048);
Ну вот написал так:
if (keyLength == 1024)
std::thread(rsa.generateKeys, RSA::RSA_1024).join();
else if (keyLength == 2048)
std::thread(rsa.generateKeys, RSA::RSA_2048).join();
Пытаюсь скомпилить, нифига не выходит. Вылезает куча ошибок:
Прототип функции:
enum KeyLength {RSA_1024 = 512, RSA_2048 = 1024};
void generateKeys(KeyLength keyLength = RSA_2048);
UPDATE:
if (keyLength == 1024)
std::thread(&RSA::generateKeys, &rsa, RSA::RSA_1024).join();
else if (keyLength == 2048)
std::thread(&RSA::generateKeys, &rsa, RSA::RSA_2048).join();
Вроде заработало
При передаче указателя на нестатическую функцию-член, нужно вторым аргументом передавать указатель на класс, членом которого она является, в данном случае, this. Это относится к большинству функций std, которым можно передать функциональный объект в качестве аргумента (обычно в таких случаях аргументы интерпретируются как в std::bind).
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости