I have the follwing three files:
MyClass.h
class MyClass { private: std::thread* thread = NULL; void run(); public: ~MyClass(); void start(); } MyClass.cpp
MyClass:~MyClass() { if (thread != NULL) thread -> join(); } void MyClass::run() { //do stuff } void MyClass::start() { thread = &std::thread (&MyClass::run, this); } Main.cpp
int main() { MyClass obj{}; obj.start(); return 0; } When I run this code I always get R6010 - abort() has been called and I don't know why abort() is called. When I create the thread in the main function it works, but for design reasons I want to start it in MyClass. This there a way to start the thread in MyClass?
P.S.: This question is quite similar, but the answers didn't solve my problem.
std::threadmember, instead of astd::thread*pointer.std::threadand taking the address of a temporary? (which should have caused a compilation error)