Ошибки, пытающиеся использовать boost :: asio :: deadline_timer в классе - PullRequest
0 голосов
/ 29 апреля 2020

Boost v1.54

Я изначально написал свои тесты для этого в одном файле. cpp, который работал нормально, однако при попытке объединить его с моим исходным кодом с помощью в моем классе я получаю постоянные ошибки:

error: no matching function for call to ‘boost::posix_time::seconds::seconds()’
 Database::Database()

error: no matching function for call to ‘boost::asio::basic_deadline_timer<boost::posix_time::ptime>::basic_deadline_timer()’
 Database::Database()

error: no match for call to ‘(boost::posix_time::seconds) (int)’
     interval(1);  // 1 second

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

a. cpp - Конструктор базы данных

Database::Database()
{
    interval(1);
    timer(io_service,interval);    
}

ах

class Database
{
public:
    boost::posix_time::seconds interval;
    boost::asio::io_service io_service;
    boost::asio::deadline_timer timer;    
};

РЕДАКТИРОВАТЬ У меня есть решил мою проблему на данный момент, инициализировав конструктор в виде списка с:

Database::Database()
    : interval(1), timer(io_service, interval) {};

1 Ответ

0 голосов
/ 29 апреля 2020

Сейчас я решил свою проблему, инициализировав конструктор в виде списка с:

Database::Database()
    : interval(1), timer(io_service, interval) {};
...