Понимаю, что python -- язык с динамической типизацией, но мне крайне любопытен вопрос о повышающем преобразовании объекта при передаче оного в какую-нибудь функцию. Как это реализовать в python? Хочется что-то вроде этого: http://pastebin.org/24610 (этот же код ниже). Т.е., что бы use_it() был доступен *только* интерфейс базового класса. Спасибо. #include <iostream> class Base { public: int data_; Base(): data_(100) {}; virtual void hello() { std::cout << "base::hello()" << std::endl; } void setData(int data) { data_ = data; } }; class Derived: public Base { public: Derived(): Base() {data_ = 500;}; virtual void hello() { hi(); } void hi() { std::cout << "derived::hi()" << std::endl;} }; void use_it(Base* b) { b->hello(); b->setData(6000); } int main(int argc, char** argv) { Derived* d = new Derived(); std::cout << "data = " << d->data_ << std::endl; use_it(dynamic_cast<Base *>(d)); std::cout << "data = " << d->data_ << std::endl; delete d; return 0; }
Ответ на:
комментарий
от Legioner
Ответ на:
комментарий
от tailgunner
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от tailgunner
Ответ на:
комментарий
от outdoor_profanity
Ответ на:
комментарий
от vsemnazlo
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум [C++] Перегрузка new и delete в производном классе (2011)
- Форум [C++] [Жаба] Это магия? (2008)
- Форум Вопрос по С++ (2004)
- Форум Укозатель на функцию член (2006)
- Форум Ниасилил C++ vector<unique_ptr<T>> list initialization (2016)
- Форум C++/exceptions - деление на ноль не ловиццо, почему? (2006)
- Форум C++, ссылки и полиморфизм (2013)
- Форум C++ каст при передаче по ссылке (2014)
- Форум gcc bug (global array of templated class - no destructors) (2005)
- Форум 'this' in lambda and in class method is not the same when using vector of std::thread (2021)