Для моего назначения я создал класс Robot, который имеет указатель на состояние класса. Этот класс состояний является интерфейсом. Фактическая реализация дочерних классов состояния должна выполняться в отдельной DLL.C++ DLL-зависимости State-pattern
Я смог успешно сделать эти классы в отдельной DLL, так что DLL с дочерними классами штата (StateDLL
) ссылается только на DLL, которая содержит класс интерфейса State.
Проблема начинается с конструктора класса Robot. Я должен позволить частной переменной робота State*
знаю, что его первый ChildClass будет, например (где S имеет тип State*
)
Robot::Robot() {
S = StateDLL::StateChild1::get();
}
Означает ли это, что робот должен знать о содержании StateDLL? Есть ли способ рассказать ему о детском классе каким-либо другим способом или не имеет значения, могу ли я указать ссылку RobotDLL в StateDLL (с идеей StateDLL может много измениться, в то время как RobotDLL должен быть более статичным)?
Экспортировать заводскую функцию из 'StateDLL', что-то вроде' State * GetInitialState(); '' Класс робота будет зависеть от этой функции, но не от каких-либо деталей реализации (в частности, не нужно было бы знать о каких-либо отдельных классах, полученных из 'State'). –