Форум программистов, компьютерный форум CyberForum.ru

Научить метод принимать в качестве аргумента объект своего класса и дочерних классов - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Выход итератора за границы list http://www.cyberforum.ru/cpp-beginners/thread1778338.html
почему у меня падает программа, когда пытаюсь ввести отсортированные элементы в другой list ??? list<char>ch; list<char>rev; for (int i = 0; i < 20; i++) ch.push_back('A' + rand() % 26); list<char>::iterator p = ch.begin(); while (p != ch.end()) {
C++ Наилучший делитель Будем говорить, что число a лучше числа b, если сумма цифр a больше суммы цифр числа b, а в случае равенства сумм их цифр, если число a меньше числа b. Например, число 124 лучше числа 123, так как у первого из них сумма цифр равна семи, а у второго – шести. Также, число 3 лучше числа 111, так как у них равны суммы цифр, но первое из них меньше. Дано число n. Найдите такой его делитель (само... http://www.cyberforum.ru/cpp-beginners/thread1778315.html
C++ Вывести количество совершенных чисел в интервале [a, b]
Число назывется совершенным, если оно равно сумме своих собственных делителей. Собственными делителями имеются ввиду те делители числа, которые строго меньше него. Например, число 28 совершенно, так как 28 = 1 + 2 + 4 + 7 + 14. Единица не считается совершенным числом. Заданы числа a и b. Вывести количество совершенных чисел в интервале . Можете предполагать, что a < b, a > 0, b > 0.
Найти ошибку в коде (ideone, C++) C++
Код для поиска в глубину.Всего на графе 7 вершин(не считая 0) В айдиван работает,НО,,,откуда-то берет еще 8-ую и 9-ую вершины, которых вообще не должно быть. В чем может быть ошибка? Код прилагается: using namespace std; const int n = 8; int i, j; bool *visited = new bool; int graph =
C++ Бинарное дерево, добавить функции удаления и поиска узла http://www.cyberforum.ru/cpp-beginners/thread1778238.html
Помогите! нужно. Пытался сделать сам но не очень получается доделать функции: удаление узла поиск элемента возврат самой длинной ветви(распечатка ее элементов) #include<iostream> using namespace std; struct binariTreea{
C++ Нарисовать прямоугольник звездочками Нарисуйте следующие фигуры ******** ******** ******** ******** ******** ******** ******** ******** параметризовать длиной и шириной подробнее

Показать сообщение отдельно
Melg
537 / 158 / 64
Регистрация: 23.09.2013
Сообщений: 310
10.07.2016, 10:05     Научить метод принимать в качестве аргумента объект своего класса и дочерних классов
Unknownx, в общем случае попытка выяснить тип объекта по ссылке на базовый класс говорит о каких-то проблемах в архитектуре. Идея полиморфизма заключается в том, что в наследниках класса находится код, который привязан к типу этого наследника и делает в соответствии со своим специфическим знанием что-то отличное от других наследников. При этом код, который использует указатель/ссылку на базовый класс должен работать с ним как с целостной сущностью и ни в коем случае НЕ должен начинать зависеть от того, какой на самом деле наследник базового класса был проброшен при вызове, а наследник должен реализовывать функциональность в соответсвии с заявленной в базовом классе (принцип подстановки Лисков (LSP из SOLID). Если говорить о некоторых более частных случаях, скажем в виде исключения - то может использоваться либо двойная диспетчеризация - когда с одной стороны используется полиморфизм для обработки вызова, с другой стороны вызываются разные перегрузки методов исходя из типа аргумента (Таким образом устроен boost::static_visitor для boost::variant). Наконец если используются техники типа type erasure и по какой-то причине понадобилось знать какой тип действительно находится за концепцией any/type_erasure/variant могут использоваться либо подходы с кастами ( в том числе специфические для данного типа, а не dynamic_cast, например как в any_cast). Ну и самый прямолобый вариант - просто иметь метод, который возвращает тип хранимого в базовом классе наследника (как например реализовано в QVariant::type). Если Вы приведете конкретный пример задачи, решение которой Вас интересует с точки зрения использования полиморфизма, мы могли бы подумать над тем, можно ли найти её решение без попыток выяснения типа наследника в пользователе базового класса.
 
Текущее время: 14:47. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru