Сообщение Re: Множественное наследование интерфейсов от 04.06.2018 13:57
Изменено 04.06.2018 14:05 AlexGin
Re: Множественное наследование интерфейсов
Здравствуйте, Максим Рогожин, Вы писали:
МР>Привет!
МР>Подскажите, пожалуйста, что почитать по теме дизайна использующего множественное наследование интерфейсов?
МР>Какие паттерны там применяются?
МР>Например, как решается такая задача
МР>
МР>Просто с помощью dynamic_cast?
МР>Привет!
МР>Подскажите, пожалуйста, что почитать по теме дизайна использующего множественное наследование интерфейсов?
МР>Какие паттерны там применяются?
МР>Например, как решается такая задача
МР>
МР>class INotifiable {
МР>public:
МР> virtual void notify() =0;
МР>};
МР>class ISerializable {
МР>public:
МР> virtual void serialize() =0;
МР>};
МР>shared_ptr<INotifiable> obj = ...;
МР>if ( obj поддерживает еще и интерфейс ISerializable ) {
МР> сохранить obj в файл
МР>}
МР>
МР>Просто с помощью dynamic_cast?
shared_ptr<ISerializable> objSer = std::dynamic_pointer_cast<ISerializable>(obj);
Re: Множественное наследование интерфейсов
Здравствуйте, Максим Рогожин, Вы писали:
МР>Привет!
МР>Подскажите, пожалуйста, что почитать по теме дизайна использующего множественное наследование интерфейсов?
МР>Какие паттерны там применяются?
МР>Например, как решается такая задача
МР>
МР>Просто с помощью dynamic_cast?
Есть поддержка:
std::dynamic_pointer_cast<ISomeInterface>(obj) // Начиная от C++11
Ну и если уже "ударять кувалдой":
std::reinterpret_pointer_cast<ISomeInterface>(obj) // Начиная от C++17
http://en.cppreference.com/w/cpp/memory/shared_ptr/pointer_cast
http://www.cplusplus.com/reference/memory/dynamic_pointer_cast
МР>Привет!
МР>Подскажите, пожалуйста, что почитать по теме дизайна использующего множественное наследование интерфейсов?
МР>Какие паттерны там применяются?
МР>Например, как решается такая задача
МР>
МР>class INotifiable {
МР>public:
МР> virtual void notify() =0;
МР>};
МР>class ISerializable {
МР>public:
МР> virtual void serialize() =0;
МР>};
МР>shared_ptr<INotifiable> obj = ...;
МР>if ( obj поддерживает еще и интерфейс ISerializable ) {
МР> сохранить obj в файл
МР>}
МР>
МР>Просто с помощью dynamic_cast?
Есть поддержка:
std::dynamic_pointer_cast<ISomeInterface>(obj) // Начиная от C++11
Ну и если уже "ударять кувалдой":
std::reinterpret_pointer_cast<ISomeInterface>(obj) // Начиная от C++17
shared_ptr<ISerializable> objSer = std::dynamic_pointer_cast<ISerializable>(obj);
http://en.cppreference.com/w/cpp/memory/shared_ptr/pointer_cast
http://www.cplusplus.com/reference/memory/dynamic_pointer_cast