Как вызывать разные методы с собственными интервалами выборки внутри класса, используя другой класс TimerInterval, работC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Как вызывать разные методы с собственными интервалами выборки внутри класса, используя другой класс TimerInterval, работ

Сообщение Anonymous »

Я пытаюсь использовать ту же идею, которая предложена в качестве ответа на мой вопрос в этом посте. Цель состоит в том, чтобы реализовать класс, который будет вызывать 3 разных метода с собственными интервалами внутри метода start_trigger.
Следующий пример кода скомпилирован успешно, но он не работает логически, поскольку жизнь время объектов IntervalTimer ограничено методом start_process(), а не временем жизни класса.
Поэтому мое решение решить эту проблему — определить 3 переменные IntervalTimer как член класса, а затем инициализировать их. внутри метода start_processing.
Метод start_process является общедоступным и может быть вызван через объект MyTestClass.
Вот код, который будет компилируется без проблем, но он не вызывает повторно три метода (метод1, метод2 и метод3 с заданными интервалами).

Код: Выделить всё

#include 
#include 
#include 
#include 
#include 
#include 

namespace asio = boost::asio;
using namespace std::chrono_literals;
using duration            = std::chrono::steady_clock::duration;
static constexpr auto now = std::chrono::steady_clock::now;
using boost::system::error_code;
using namespace std;

enum MethodTypes { FIRST = 0, SECOND = 1, THIRD = 2 };

using Callback = std::function;
//template
struct IntervalTimer {
IntervalTimer(asio::any_io_executor ex, duration interval, Callback callback)
: interval_(interval)
, cb_(std::move(callback))
, tim_(ex, interval_)
{
loop();
}

private:
void loop() {
while (tim_.expiry() 

Подробнее здесь: [url]https://stackoverflow.com/questions/78314381/how-to-call-different-methods-with-their-own-sample-intervals-inside-a-class-usi[/url]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»