Quando si crea un thread che chiama una funzione membro, c'è una differenza tra passare un puntatore alla classe corrente o passare un riferimento?std :: costruttore di thread C'è una differenza tra passare un puntatore e passare per ref?
Dall'esempio seguente, metodo1 si comporta come metodo2? Ci sono delle differenze?
class MyClass
{
public:
MyClass(){};
~MyClass(){};
void memberFunction1()
{
//method 1
std::thread theThread(&MyClass::memberFunction2, this, argumentToMemberFunction2)
//method 2
std::thread theThread(&MyClass::memberFunction2, std::ref(*this), argumentToMemberFunction2)
}
void memberFunction2(const double& someDouble){};
}
Supponendo che compili, non ci dovrebbe essere. I riferimenti sono zucchero sintattico per i puntatori. Non significa che non potrebbe rovinare il compilatore, dato che è sintatticamente discutibile passare il 'std :: ref'' reference_wrapper' quando la chiamata viene eseguita (internamente) con 'this' come puntatore come primo oggetto. – ShadowRanger