Mình đang vọc cách truyền function pointer vào một thread.
Mình có 2 cái function pointer, 1 cái không có giá trị truyền vào, cái kia có.
Cái phần dưới đây chạy bình thường. printApple là một function in ra màn hình một chữ Apple thôi.
typedef void(*Apple)();
Apple fruit = printApple;
std::thread appleThread(fruit);
appleThread.join();
Cái dưới này lại không chạy được. printOrange(int price) là một function có 1 tham số truyền vào (giá) và in ra màn hình một câu “Giá Orange: “ kèm theo tham số truyền vào.
typedef void(*Orange)(int price);
Orange juice = printOrange;
std::thread orangeThread(juice(5));
orangeThread.join();
Cái orangeThread nó ghi là “no instance constructor “std:: thread::thread” matches the argument list. argument types are: (void).
Cho mình hỏi tại sao lại như vậy? Khác nhau ở chỗ một cái có tham số, cái kia không thôi mà.