On 2/4/02 12:02 AM, jeffhung@ms44.url.com.tw wrote:
I cannot compile the thread example listed on the document: http://www.boost.org/libs/thread/doc/thread.html#Example
[...]
boost::thread thrd(thread_alarm(secs));
[...]
test_thread0.cpp: In function `void run()': test_thread0.cpp:28: request for member `join' in `thrd', which is of non-aggregate type `boost::thread ()(thread_alarm)'
I've tried to figure out where the problem is and failed to find the definition of class thread. Do I miss something? Or, is it just a freebsd porting problem?
This is a bug in the example that has been fixed for the next upcoming Boost release. The web site will be updated soon. The problem line above is can be interpreted as a declaration of a function named thrd with a parameter of type thread_alarm named secs, rather than a declaration of an object named thrd. And the C++ rule is that if it can be a function declaration, then it is. The fix is to replace the line with these two lines: thread_alarm alarm(secs); boost::thread thrd(alarm); Hope that helps. -- Darin