У меня есть проблема, и я не уверен, как подойти к ней в C ++;
У меня есть три объекта, каждый из которых может выполнять различные действия. Эти объекты поддерживают дополнительный объект, который добавляет к действиям, которые они могут выполнять. В зависимости от объекта, к которому он добавлен, надстройка включает различные действия.
Как бы я смоделировал это в C ++?
Я хотел бы иметь классы A, B, C, AddOn1, AddOn2.
Проблема:
Как AddOn1 / 2 узнает во время выполнения, какие действия он содержит (другими словами, как он узнает, к какому (типу) объекту он присоединен)?
Как класс A, B, C узнает, какой тип надстройки у него есть?
Я хотел бы сделать что-то вроде
класс А {
...
AddOn * addOn;
};
И используйте этот указатель для работы с надстройкой. Но мне нужно привести его в определенный класс, чтобы иметь возможность использовать его функции.
Я вижу, как я могу иметь логические поля, такие как hasAddOn1 и hasAddOn2, и приводить их на основе этих настроек. Затем в базовом классе AddOn я мог бы иметь указатель на его родителя и опрашивать родителя, чтобы узнать тип AddOn.
Имеет ли это смысл?