|
2 / 1 / 2
Регистрация: 17.11.2010
Сообщений: 121
|
||||||
Проблема с typedef.... не виден новый тип данных!29.11.2011, 15:16. Показов 6214. Ответов 62
Метки нет (Все метки)
Пишу шаблон класса множество, у множеств элементы могут быть разного типа, одно, например, целочисленное, другое - строка.
Пользователю дается возможность выбрать тип, с которым ему работать. Тип выбирается через функцию MenuType() и через свитч конкретизируется... но сразу за границей свича новый тип данных становится недоступным. Как решить эту проблему? вот фрагмент кода, в котором все и происходит.
0
|
||||||
| 29.11.2011, 15:16 | |
|
Ответы с готовыми решениями:
62
Новый тип данных тип typedef Создать новый тип данных на Си |
|
Заблокирован
|
|||
| 29.11.2011, 20:39 | |||
|
1. Как его планируется использовать. 2. Для каких целей. В данном случае, я себе не очень хорошо представляю, как и для чего может понадобится вот такая приблуда? Вот вы пишите: То есть, задание то выполнить можно и так, и сяк, и этак. Вопрос: а что именно мы делаем? Сейчас мне это задание видится в сферическом вакууме, я не вижу практической ценности.
0
|
|||
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
| 29.11.2011, 20:44 | |
|
Bers, Ну смотри.
Человек говорит, что у него есть несколько типов, с каждым типом работа с множеством одинаковая, кроме собственно типа. Не хочет копипастить каждый метод для работы с типом (хотя каждый метод и не пришлось бы, 4 копипаста). Я же предлагаю написать фукцию, в которую перенести результат работы, функция шаблонная, принимает в качестве шаблонного параметра нужный тип. Итого : вся работа выполняется в этой функции (если действительно нет различия, кроме типов), в main остается только выбрать нужный тип ну и другие вещи не относящиеся к этой фукнции.
0
|
|
|
|
|
| 29.11.2011, 20:47 | |
Сообщение было отмечено как решение
Решение
Bers, все, что раньше было в main() переносим в шаблонную функцию, а в новом main() надо написать меню выбора типа и вызов функции с нужным типом.
3
|
|
|
Заблокирован
|
||||||
| 29.11.2011, 20:50 | ||||||
|
ForEveR, А я так понял, что по заданию нужно получить новый контейнер на базе существующего. Но так, что бы этот новый контейнер инкапсулировал внутри себя знание о том, какого типа объекты хранит контейнер, на базе которого он построен.
Дизайн кода может выглядеть, например вот так:
0
|
||||||
|
|
|||
| 29.11.2011, 21:10 | |||
![]() Добавлено через 2 минуты Подозреваю, что по заданию надо сделать одно приложение, в котором можно будет поглядеть на множества, содержащие разные типы данных и все. То есть сначала поиграться со строками, потом с числами. Без изменений в коде и повторной компиляции. Вот и все.
0
|
|||
|
Заблокирован
|
||
| 29.11.2011, 21:18 | ||
|
fasked, ну если так, то Фореверский вариант сам напросится. Но это не интересно.
Гораздо интереснее придумать, как вот такой доступ получить: (*Cont).Method(); Что б с одной стороны иметь возможность заказывать в рантайме тип контейнера. А с другой - получать к этому контейнеру доступ, не дублируя интерфейс в обертке. Ну, по аналогии с работой смартпоинтеров) Добавлено через 1 минуту Дык... а кто б его вапще видел то))
0
|
||
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
| 29.11.2011, 22:02 | |
|
Bers, Ну самый простой вариант сделать IContainer шаблонным. Но это все же не в рантайме.
Можно сделать некое подобие boost::any вероятно. Добавлено через 18 минут Bers, Вообщем без рефлексии это невозможно по сути.
0
|
|
|
Заблокирован
|
|
| 29.11.2011, 22:02 | |
|
0
|
|
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
| 29.11.2011, 22:04 | |
|
Bers, Reflection. Метаданные типа. Как в шарпе
0
|
|
|
Заблокирован
|
|
| 29.11.2011, 22:38 | |
|
ForEveR, гуглил-шмуглил, так и не проникся, что это такое "рефлексия" и с чем её едят
0
|
|
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|||||||||||
| 29.11.2011, 23:13 | |||||||||||
|
Bers, http://ru.wikipedia.org/wiki/%... D%E8%E5%29
Пример на шарпе.
0
|
|||||||||||
|
2 / 1 / 2
Регистрация: 17.11.2010
Сообщений: 121
|
|
| 30.11.2011, 13:41 [ТС] | |
|
Ох, почитал и окончательно запутался....
0
|
|
|
Заблокирован
|
||
| 30.11.2011, 14:34 | ||
|
0
|
||
|
|
||
| 30.11.2011, 15:22 | ||
![]() По принципу baby steps от простого к сложному, да не спеша, - и все у вас получится! Для начала, чтоб реализовать-таки концепцию однообразной работы с разными типами, попробуйте сделать класс-обертку, умеющий содержать в себе данные нужного типа и содержащий методы, перегруженные для работы с различными типами. Как вам предложил камрад Bers где-то в предыдущих постах. Пусть это обозвали унылым и топорным способом, но для начала в самый раз, по крайней мере не шибко трудно. ![]() Собственно, тута.
0
|
||
|
2 / 1 / 2
Регистрация: 17.11.2010
Сообщений: 121
|
|
| 30.11.2011, 15:48 [ТС] | |
|
Задание таково: Пользователь выбирает тип данных, выполняются операции с множеством (пересечение, разность - все реализовано уже в виде шаблона и отлажено),
затем опять возврат в меню, выбирается другой тип и опять та же работа с ними.... Все типы данных по отдельности работают нормально, и по условию одновременно идет работа только с одним типом множества...
0
|
|
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
| 30.11.2011, 15:49 | |
|
Fantom.AS, Ну тогда смотрите пост №42
0
|
|
|
2 / 1 / 2
Регистрация: 17.11.2010
Сообщений: 121
|
||||||||||||
| 30.11.2011, 16:33 [ТС] | ||||||||||||
|
То есть сделать так: например:
а потом:
0
|
||||||||||||
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
||||||
| 30.11.2011, 16:40 | ||||||
|
Fantom.AS, По сути да. Примерно. А дальше от вашего задания зависит.
Добавлено через 28 секунд
0
|
||||||
|
2 / 1 / 2
Регистрация: 17.11.2010
Сообщений: 121
|
|
| 30.11.2011, 16:41 [ТС] | |
|
ой, да... про void забыл)
0
|
|
| 30.11.2011, 16:41 | |
|
Помогаю со студенческими работами здесь
60
Новый тип данных в объявлении метода класса Как на VB 7 создать новый тип данных(свой)? Функциональный тип через typedef Определяя класс в PHP, мы создаем новый ТИП данных? Проблема с typedef и FILE* Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
ПЛИС
zxcha1ka_ 27.01.2026
AHDL
Разработать программы для синтеза следующих устройств:
1. Параллельного регистра
4-х разрядного с синхронной загрузкой и асинхронным сбросом (обнулением);
Пoмoгитe пoжaлyйстa
|
Загрузка PNG-файла с альфа-каналом с помощью библиотеки SDL3_image на Android
8Observer8 27.01.2026
Содержание блога
SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
|
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
|
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога
SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
|
|
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога
Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip"
Извлеките архив и вы увидите. . .
|
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога
Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д.
Сборка примера
Скачайте. . .
|
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net
REST сервисы временно не работают, только через Web.
Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
|