Простая проблема с шаблоном издателя/подписчика с несколькими подпискамиC++

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

Сообщение Anonymous »

#include
#include

class Subscriber {
public:
virtual void Notify(float f) = 0;
};

class Publisher {
public:
constexpr void AddSubscriber(Subscriber* sub) { subs_.push_back(sub); };

void Notify(float v) {
for (auto& s : subs_) {
if (s) {
s->Notify(v);
}
}
}

private:
std::vector subs_;
};

class DriverA : public Publisher {
public:
using Subscriber = ::Subscriber;
void Activate(float f) { Notify(f); }
};

class DriverB : public Publisher {
public:
using Subscriber = ::Subscriber;
void Activate(float f) { Notify(f); }
};

class Handler : public DriverA::Subscriber, public DriverB::Subscriber {
public:
constexpr Handler(DriverA& da, DriverB& db) {
da.AddSubscriber(this);
db.AddSubscriber(this);
}

float Val() const { return val_; }

private:
void DriverA::Subscriber::Notify(float v) override {
val_ = v;
std::cout

Подробнее здесь: https://stackoverflow.com/questions/797 ... scriptions
Ответить

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

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

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

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

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