C++11 thread, cos nie dziala jeden watek

0
#include <iostream>
#include <Windows.h>
#include <thread>

class Car
{
	void operator()() const
	{
		for (int i = 0; i < 10; ++i)
		{
			std::cout << i << " Starting a car" << std::endl;
			Sleep(1000);
		}
	}
};

void do_some_work()
{
	for (int i = 0; i < 20; ++i)
	{
		std::cout << i << " pracuje" << std::endl;
		Sleep(1000);
	}
}

int main()
{
	std::thread t1(do_some_work);
	std::thread t2((Car()));
	for (int i = 0; i < 15;++i)
	{
		std::cout << i << " Watek glowny" << std::endl;
		Sleep(1000);
	}
	return 0;
}

Dlaczego program mi się nie kompiluje? Wywala mi błąd:
Failed to specialize function template 'unknown-type std::invoke(_Callable &&,_Types &&...)

3

Zdaje się, że zapomniałeś podać w std::thread t2((Car())); jaka metoda ma być początkiem wątku.

std::thread t2(&Car::operator(), Car());

Dodatkowo wtedy, aby operator() był możliwy do uzyskania poza klasą, musi być publiczny.

1

Myślałem, że dałeś się złapać w most vexing parse, ale nie, po prostu widoczność operatora() jest private:, dlatego Car nie jest widoczny jako callable.

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