Пример ускорения потока показывает ошибку, что она не может соответствовать функции для вызова boost :: thread :: thread ()» - PullRequest
1 голос
/ 11 июля 2011

Я инициализировал поток в основной функции при создании namspace multithread_init, чтобы выдвинуть класс set_multihthread в пространство имен. Почему после объявленного boost::thread это не совпадает функция для вызова boost::thread t(smulti.thread)?

#define BOOST_THREAD_USE_LIB
#include <boost/thread.hpp>
#include <boost/thread/thread.hpp>
#include <iostream>
#include <vector>
#include <cstdlib>
#include <ctime>
#include <iostream>


#ifndef MULTITHREAD_INIT_HPP_
#define MULTITHREAD_INIT_HPP_
namespace multithread_init{
    class set_multithread{
    private:
        //t;
    public:
        void thread(){
            for(int i = 0; i < 5; i++){
                wait(1);
                std::cout<<" thread i value : "<<i<<std::endl;
            }
        }

        void wait(int seconds)
        {
          boost::this_thread::sleep(boost::posix_time::seconds(seconds));
        }

//      void multi_case(){
//          t.join();
//          boost::thread  t(thread);
//      }

    };
}

#endif /* MULTITHREAD_INIT_HPP_ */

основной файл, как показано ниже.

int main()
{

    /*thread */
    multithread_init::set_multithread smulti;
    boost::thread  t(smulti.thread);
    t.join();

}

1 Ответ

2 голосов
/ 11 июля 2011

Вы не можете передать функцию-член таким образом.Вам необходимо привязать его к объекту

boost::thread  t(boost::bind(&multithread_init::set_multithread::thread, &smulti));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...