У меня есть класс, который содержит произвольное состояние, и он определен так:
class AbstractFoo
{
};
template <class StatePolicy>
class Foo : public StatePolicy, public AbstractFoo
{
};
Политика штата содержит только защищенные атрибуты, представляющие состояние.
Состояние может быть одинаковым для нескольких вариантов поведения, и их можно заменить во время выполнения.
Все объекты Foo имеют одинаковый интерфейс для абстрагирования самого состояния и включения хранения объектов Foo в контейнерах.
Я хотел бы найти наименее многословный и наиболее приемлемый способ выразить это.
EDIT:
Вот еще немного информации о моей проблеме:
Foo - это класс, который представляет состояние и поведение определенного оборудования, которое можно изменить либо физически, либо через пользовательский интерфейс (и существует несколько пользовательских интерфейсов).
У меня есть еще четыре вопроса:
1) Подойдет ли механизм сигнала / слота?
2) Можно ли привязать каждый излучаемый сигнал из слота в Foo, чтобы иметь указатель на Foo, как если бы он был членом класса?
3) Должен ли я вместо этого использовать посетителя и рассматривать Foo как посещаемый класс?
4) Почему StatePolicy плохой дизайн?
Вот обновленный API:
class AbstractFoo
{
public:
virtual void /*or boost::signal*/ notify() = 0; // Updates the UI.
virtual void /*or boost::signal*/ updateState() = 0 // Updates the state
};