2015-10-09 5 views
1

Я запускаю простую примерную программу для асинхронных таймеров, заданную here.Ошибка компиляции с Boost basic_deadline_timer

#include <iostream> 
#include <boost/asio.hpp> 
#include <boost/date_time/posix_time/posix_time.hpp> 

void print() 
{ 
    std::cout << "Hello, world!" << std::endl; 
} 

int main() 
{ 
    boost::asio::io_service io; 

    boost::asio::deadline_timer t(io,boost::posix_time::seconds(5)); 
    t.async_wait(&print); 

    io.run(); 
    return 0; 
} 

На компиляции, я получаю следующее сообщение об ошибке:

/boost/asio/basic_deadline_timer.hpp: In instantiation of ‘void boost::asio::basic_deadline_timer::async_wait(const WaitHandler&) [with WaitHandler = void (*)(); Time = boost::posix_time::ptime; TimeTraits = boost::asio::time_traits; TimerService = boost::asio::deadline_timer_service >]’:

src/TimerTest.cpp:16:21: required from here boost/1.48.0/common/include/boost/asio/detail/handler_type_requirements.hpp:250:43: error: too many arguments to function boost::asio::detail::lvref(handler)(\

Я охотился онлайн в течение достаточно долгого времени, но не может найти никого, кто сталкивался с подобной ошибки. Любая идея, как я могу это решить?

ответ

0

Функция должна иметь подпись:

void handler(
    const boost::system::error_code& error // Result of operation. 
); 

Вы можете прочитать in documentation

Таким образом, просто измените print функцию

void print(const boost::system::error_code& ec) 
{ 
    std::cout << "Hello, world!" << std::endl; 
} 
Смежные вопросы