std::thread - argumenty konstruktora

0

Witam,
Mam zadeklarowany gdzieś w programie wskaźnik do obiektu typu std::thread:

thread *t;

potem inicjalizuję go tak:

t = new thread(&klasa::funkcja, argumentFunkcji1, argumentFunkcji2);

i dostaję coś takiego:
''no type named 'type' in 'class std::result_of<std::_Mem_fn<void (klasa::*)(typ_argumentu1, typ_argumentu2)>(typ_argumentu1, typ_argumentu2)>'
typedef typename result_of<_Callable(_Args...)>::type result_type;''
Jak mogę to poprawić?

1

Jako pierwszy parametr (parametr wywoływanej funkcji) musisz podać adres obiektu, na rzecz którego będzie wywołana funkcja klasa::funkcja, tzn. adres jakiegoś obiektu typu klasa. (To będzie this w tej funkcji)

0

To znaczy coś takiego?

t = new thread(this, &klasa::funkcja, arg1, arg2);

Jeśli o to chodziło, to nadal mam błąd (ten sam)...

2

Wtf, programowanie przez permutacje to nie jest dobra rzecz.

Pierwszy parametr funkcji, która masz zamiar wywołać, to musi być wskaźnik na obiekt tej klasy, z której pochodzi funkcja:

klasa jakis_obiekt;
t = new thread(&klasa::funkcja, &jakis_obiekt, arg1, arg2);

1 użytkowników online, w tym zalogowanych: 0, gości: 1