как в std::thread передать allocated класс?

Работает, если класс создавать на стеке, но мне нужно создать интерфейс, ну типа базовый класс, то есть Factory по настоящему создает new Binance, а binance наследуется от Market. я думал что должно быть всё просто, но нет, опять какие то сложности, думал сделать код красивым, но нет, видимо на c++ можно писать только код, который не прикольный. хотя в цикле можно сделать создание класса в стеке, но может есть вариант создать из выделенной памяти?

#include <thread>
#include "Binance.hpp"
#include "Markets.hpp"
#include "Factory.hpp"

struct Params {
    const char *url;
    const unsigned short port;
    enum Markets type;
} Params[] = {
    { "wss://stream.binance.com/ws", 9443, Markets::BINANCE }
};

int main ( int argc, char **argv ) {

    const int sizeOfParams = sizeof (Params) / sizeof (struct Params);

    for ( int i = 0; i < sizeOfParams; i++ ) {
        Market *market = FactoryNewMarket ( Params[i].url, Params[i].port, Params[i].type );

        std::thread threadMarket ( market );

        threadMarket.detach ( );
    }
}

Ответы (0 шт):