Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
C++ Нужна помощь , помогите переделать несложную программу с C# на C++ https://www.cyberforum.ru/ cpp-beginners/ thread528775.html
Нужна помощь , помогите переделать несложную программу с C# на C++ using System; namespace ConsoleApplication1 { class Program {
C++ шаблонная функция
Создать шаблонную функцию, изменяющую попарно элементы массива следующим образом: первый элемент будет равняться сумме пары, а второй разности пары. На пример: список - 0 2 3 4 3 6, результат 2 –2 7 –1 9 –3. свои наработки потерял, если найду выложу.....
C++ Напишите программу, которая сравнивает ответ пользователя на вопрос с правильным ответом. Напишите программу, которая сравнивает ответ пользователя на вопрос с правильным ответом. https://www.cyberforum.ru/ cpp-beginners/ thread528762.html C++ задание со строкой и массивами. C++. Добрый вечер всем. Помогите пожалуйста! Надо написать программу, которая просит пользователя ввести строку. Прочитать строку и разбить на два массива - один с символами соответствующими цифрам, другой с символами соответствующими буквам. Остальные символы "выбросить". Массив должен быть отсортирован по возрастанию, например (AAaacsstux или 11234489). Перед вставкой в массив, символы, которые... https://www.cyberforum.ru/ cpp-beginners/ thread528760.html
С++ - с какой книги начать и в каком ide прорабатывать примеры C++
Решил я заняться изучением С++, на начальном этапе всегда нужна помощь от опытных людей. На данный момент у меня стоят IDE С++ Builder 6 и XE, а также Visual c++ 2010 Express. Скачал несколько книг по С++, просмотрел везде введения, тип изложения, наличия примеров итп итд. Остановился на Прата С. "Язык программирования С++. Лекции и упражнения", Конечно хотелось прочитать и Страуструпа, т.к...
C++ добавить в программу использование функций #include "stdafx.h" #include <iostream> #include <cmath> using namespace std; const int ss=80; int main() { setlocale (LC_ALL, "Russian"); int n, i, j=-1, q=0, d=0, a, sum=0, b=0; https://www.cyberforum.ru/ cpp-beginners/ thread528756.html
C++ Расположение элементов массива в алфавитном порядке из файла Помогите пожалуйста с заданием.Необходимо расположить элементы из файла .txt в алфавитном порядке. Как я понял можно таким методом сделать: Открыть файл, создать массив и присвоить ему рандомные значения от 128 до 159( это вроде по кодировке ASCII) потом расположить элементы массива в порядке возрастания, и сохранить файл чтоб буквы были в нужном порядке. Помогите пожалуйста....Только как нибудь... https://www.cyberforum.ru/ cpp-beginners/ thread528750.html C++ Касса автовокзала
Нужна задача на С++(консольное приложение), С++(Builder) и С# Расписание автобусов:номер рейса, конечный и промежуточный пункты, время отправления. Количество свободных мест на каждом рейсе. выбор ближайшего рейса до заданного пункта (при наличии свободных мест), оформление билетов с сохранением данных в текстовый файл. Задачу реализовать с помощью файлов
C++ Ошибка записи в файл. :( https://www.cyberforum.ru/ cpp-beginners/ thread528729.html
Доброго времени суток дорогие форумчане. Решил написать программу которая считывает символы из одного файла ("C:\\1.txt") в массив (mass)? а уже из массива происходит запись в новый файл ("C:\\2.txt"). #include <iostream> #include <stdlib.h> //fprintf( PVPFILE, "%d", pvpin); using namespace std; void abc(){ int i=0; //кол-во символов в "C:\\1.txt"
C++ В последовательности из N произвольных чисел подсчитать количество нулей https://www.cyberforum.ru/ cpp-beginners/ thread528723.html
В последовательности из N произвольных чисел подсчитать количество нулей.Кто знает как сделать?Помогите:)На C++
C++ Снова я со своей квадратной матрицей.
Вроде доделал программу, которая проверяет матрицу на латинский и магический квадрат: #include <iostream.h> #include <conio.h> #include <math.h> using namespace std; int **mass = 0; int n,i,j; //Вводимо матрицю
C++ Определить количество различных элементов матрицы https://www.cyberforum.ru/ cpp-beginners/ thread528703.html
Помогите ,пожалуйста ,реализовать программу на языке Си . Определить количество различных элементов матрицы С (повторяющиеся элементы считать один раз).Если можно с коментариями в коде для понимания .
1 / 1 / 1
Регистрация: 22.12.2013
Сообщений: 27
20.02.2015, 21:47 0

Как узнать, какого типа объект находится по указателю - C++ - Ответ 7252830

20.02.2015, 21:47. Показов 22110. Ответов 22
Метки (Все метки)

Ответ

Цитата Сообщение от hoggy Посмотреть сообщение
Более того: именно к вам можно обратить ваш собственный тезис:
С точки зрения ООП ваш юзкейс нарушает идеому "зарыт для изменений, открыт для расширений",
Согласен, принцип открытости-закрытости может нарушаться в абстрактных коллекциях.
С теоретической точки зрения да, если нам нужна динамическая типизация, то мы не соблюдаем этот принцип.

Но программирование прежде всего имеет смысл с точки зрения практики.
И не спроста язык предлагает нам инструменты динамической типизации вроде dinamic_cast и typeid.
Можно обойтись и без таких коллекций, только это усложнит реализацию.

Лучше рассмотреть на конкретной задаче:
Есть 2 контура Contour, состоящих из последовательно соединенных линий Line: Element и дуг Arc: Element.
Нам нужно найти точки пересечения этих контуров.

Архитектурное решение с применением абстрактных коллекций: Перечисляем элементы первого контура, для каждого из них перечисляем все элементы второго контура и вызываем у них метод PointF pf = el1.Intersect(el2);
В методе Intersect каждого типа пишем свич-кейсы. Нарушаем принцип открытости-закрытости (при добавлении новых типов примитивов придется дописывать свич-кейсы в каждом "братском" классе), но простота реализации и поддержки, а также скорость выполнения программы при большом количестве элементов (касты делаются быстро, по крайней мере на C#).

Какую можете предложить альтернативу? (Естественно в приватных функциях контура должны сохраняться возможности вставки, удаления, инверсии элементов, и желательно доступа к элементу по индексу).

Добавлено через 39 минут
Архитектурное решение с применением абстрактных коллекций: Вызываем метод cont1.Intersect(cont2); Перечисляем элементы первого контура, приводим к производному типу. Для каждого из них перечисляем все элементы второго контура, приводим их и вызываем метод PointF pf = (line1/arc1).Intersect(line2/arc2);
Все свич-кейсы пишутся в методе Contour.Intersect. При добавлении новых типов примитивов, нужно будет дописать свич кейсы только этого метода, а ранее написанный код примитивов останется без изменений.
В такой реализации не нарушается принцип открытости-закрытости, но остается простота реализации и поддержки, а также скорость выполнения программы при большом количестве элементов (касты делаются быстро, по крайней мере на C#).

А вот избавиться от динамической типизации вряд ли получится. Отказываться от абстрактной коллекции тоже смысла не вижу и не считаю это ущербным. В принципах ООП ничего нет про ущербность абстрактных коллекций=)

Вернуться к обсуждению:
Как узнать, какого типа объект находится по указателю C++
0
Заказать работу у эксперта
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.02.2015, 21:47
Готовые ответы и решения:

Как определиться объект какого типа мы перетаскивали мышью?
Всем здравствуйте. На форме label1 и button1. Оба объекта могут инициировать перетаскивание по...

Как узнать находится ли объект в фокусе
Создаю компонент. Как мне внутри компонента понять, что он находится в фокусе? if focused=true не...

Как узнать что находится в переменной типа byte[]
Здравствуйте. Я имею простенький чат p2p. При передаче текста, я его перевожу из string в byte, ну...

Forbids casting в dlsym - ISO C++ не поддерживает приведение типа указателя на функцию к указателю на объект
Есть вот такой пример загрузки .so #include &lt;iostream&gt; #include &lt;dlfcn.h&gt; int main() { ...

22
20.02.2015, 21:47
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.02.2015, 21:47
Помогаю со студенческими работами здесь

Как узнать из какого окна и какого процесса пришло сообщение?
Собственно один многооконный процесс посылает SendMessage другому процессу в какое - то окно. Можно...

Подсчитать, сколько файлов какого типа находится на логическом диске по выбору пользователя
Подсчитать, сколько файлов какого типа находится на логическом диске по выбору пользователя....

От какого типа каждый объект прямо или косвенно является производным в .Net?
1 System.Object 2 System.Exception 3 Enumerator 4 System.Type

Можно ли узнать если объект находится на объекте?
Даны два объекта, один это Столб, а второй это мяч. Мячик летает по карте, как сделать когда мячик...

Как вернуть объект по указателю
У меня есть функция QStandardItemModel set_model(QStandardItemModel*a) { return a; } ...

Как удалить объект класс из кучи по указателю?
Как удалить экземпляр класса из кучи по указателю? Есть простенький код: запускает два потока,...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru