1

I have this constructor that initializes the bar member with 0 and starts a thread:

Foo::Foo() :
  bar(0)
{
   std::thread threadloop = std::thread(loop); //create a thread with the loop function
   threadloop.join();
}

And this loop() function from the Foo class:

void Foo::loop()
{
   while (true)
   {
      bar++;
      //do more stuff...
   }
}

The compiler complains that the loop method must be static... But if I put it static, how can I access the Foo private members that are not static? (and must not be static).

EDIT:

If I use like this, it won't compile either:

std::thread threadloop(&Foo::loop, Foo());

Error: Use of deleted function.

I want to call this from my constructor, and not from outside my class.

waas1919
  • 2,365
  • 7
  • 44
  • 76

0 Answers0