2013-06-01 2 views
0

Когда я пытаюсь скомпилировать мой пул потоков с одной задачи я получил следующую ошибку:Thread ошибка бассейн компиляции

error: 'void ThreadPool::enqueue(F) [with F = CConnection::handle()::]', declared using local type 'CConnection::handle()::', is used but never defined [-fpermissive]

Вот пул потоков декларации:

class ThreadPool { 
public: 
    ThreadPool(size_t); 
    template<class F> 
    void enqueue(F f); 
    ~ThreadPool(); 
private: 
    // need to keep track of threads so we can join them 
    std::vector< std::unique_ptr<boost::thread> > workers; 

    // the io_service we are wrapping 
    boost::asio::io_service service; 
    boost::asio::io_service::work working; 
    friend class Worker; 
}; 

Вот функция, то, что хотите использовать пул потоков для теста:

void CConnection::handle() 
{ 
    ThreadPool pool(4); 
    pool.enqueue([1] 
    { 
     std::cout << "hello " << 1 << std::endl; 
     boost::this_thread::sleep(
      boost::posix_time::milliseconds(1000) 
     ); 
     std::cout << "world " << 1 << std::endl; 
    }); 
    char * databuffer; 
    databuffer = new char[16]; 
    for(int i = 0;i<16;i++) 
    { 
     databuffer[i] = 0x00; 
    } 
    databuffer[0] = 16; 
    databuffer[4] = 1; 
    databuffer[8] = 1; 
    databuffer[12] = 1; 
    asynchronousSend(databuffer, 16); 

} 

А вот Епдиеее определение:

template<class F> 
void ThreadPool::enqueue(F f) 
{ 
    service.post(f); 
} 

Может ли кто-нибудь найти то, что я делаю неправильно?

ответ

2

Является ли определение enqueue в заголовке ThreadPool.h? Это необходимо для методов шаблонов

+0

Нет, определение в ThreadPool.cpp –

+0

@Kacper Хорошо, вот что я имел в виду. Он должен быть в заголовке – Guillaume

+0

Он работает, спасибо: D Я получу ответ через 7 мин. –

Смежные вопросы