2 / 1 / 2
Регистрация: 17.11.2010
Сообщений: 121
|
||||||
1 | ||||||
Проблема с typedef.... не виден новый тип данных!29.11.2011, 15:16. Показов 5257. Ответов 62
Метки нет (Все метки)
Пишу шаблон класса множество, у множеств элементы могут быть разного типа, одно, например, целочисленное, другое - строка.
Пользователю дается возможность выбрать тип, с которым ему работать. Тип выбирается через функцию MenuType() и через свитч конкретизируется... но сразу за границей свича новый тип данных становится недоступным. Как решить эту проблему? вот фрагмент кода, в котором все и происходит.
0
|
29.11.2011, 15:16 | |
Ответы с готовыми решениями:
62
Новый тип данных тип typedef Создать новый тип данных на Си Новый тип данных в объявлении метода класса |
Заблокирован
|
|
29.11.2011, 20:39 | 41 |
Мне, что бы написать инструмент, нужно как минимум две вещи понимать:
1. Как его планируется использовать. 2. Для каких целей. В данном случае, я себе не очень хорошо представляю, как и для чего может понадобится вот такая приблуда? Вот вы пишите: А я не догоняю: а что эта функция вообще будит делать? То есть, задание то выполнить можно и так, и сяк, и этак. Вопрос: а что именно мы делаем? Сейчас мне это задание видится в сферическом вакууме, я не вижу практической ценности.
0
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
29.11.2011, 20:44 | 42 |
Bers, Ну смотри.
Человек говорит, что у него есть несколько типов, с каждым типом работа с множеством одинаковая, кроме собственно типа. Не хочет копипастить каждый метод для работы с типом (хотя каждый метод и не пришлось бы, 4 копипаста). Я же предлагаю написать фукцию, в которую перенести результат работы, функция шаблонная, принимает в качестве шаблонного параметра нужный тип. Итого : вся работа выполняется в этой функции (если действительно нет различия, кроме типов), в main остается только выбрать нужный тип ну и другие вещи не относящиеся к этой фукнции.
0
|
29.11.2011, 20:47 | 43 |
Сообщение было отмечено как решение
Решение
Bers, все, что раньше было в main() переносим в шаблонную функцию, а в новом main() надо написать меню выбора типа и вызов функции с нужным типом.
3
|
Заблокирован
|
||||||
29.11.2011, 20:50 | 44 | |||||
ForEveR, А я так понял, что по заданию нужно получить новый контейнер на базе существующего. Но так, что бы этот новый контейнер инкапсулировал внутри себя знание о том, какого типа объекты хранит контейнер, на базе которого он построен.
Дизайн кода может выглядеть, например вот так:
0
|
29.11.2011, 21:10 | 45 |
Надо дождаться автора видимо
Добавлено через 2 минуты Но я все равно не вижу смысла изменять в ран-тайме тип данных контейнера. Проще же еще один экземпляр создать Подозреваю, что по заданию надо сделать одно приложение, в котором можно будет поглядеть на множества, содержащие разные типы данных и все. То есть сначала поиграться со строками, потом с числами. Без изменений в коде и повторной компиляции. Вот и все.
0
|
Заблокирован
|
|
29.11.2011, 21:18 | 46 |
fasked, ну если так, то Фореверский вариант сам напросится. Но это не интересно.
Гораздо интереснее придумать, как вот такой доступ получить: (*Cont).Method(); Что б с одной стороны иметь возможность заказывать в рантайме тип контейнера. А с другой - получать к этому контейнеру доступ, не дублируя интерфейс в обертке. Ну, по аналогии с работой смартпоинтеров) Добавлено через 1 минуту Дык... а кто б его вапще видел то))
0
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
29.11.2011, 22:02 | 47 |
Bers, Ну самый простой вариант сделать IContainer шаблонным. Но это все же не в рантайме.
Можно сделать некое подобие boost::any вероятно. Добавлено через 18 минут Bers, Вообщем без рефлексии это невозможно по сути.
0
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
29.11.2011, 22:04 | 49 |
Bers, Reflection. Метаданные типа. Как в шарпе
0
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
||||||
29.11.2011, 23:13 | 51 | |||||
Bers, http://ru.wikipedia.org/wiki/%... D%E8%E5%29
Пример на шарпе.
Код
0 5 Method Press any key to continue...
0
|
2 / 1 / 2
Регистрация: 17.11.2010
Сообщений: 121
|
|
30.11.2011, 13:41 [ТС] | 53 |
Ох, почитал и окончательно запутался....
0
|
30.11.2011, 15:22 | 55 |
Вас тут, конечно, на путь истинный наставляют, плохого не посоветуют и все такое - да только вы все сразу-то не пытайтесь понять, так и вправду недолго запутаться.
По принципу baby steps от простого к сложному, да не спеша, - и все у вас получится! Для начала, чтоб реализовать-таки концепцию однообразной работы с разными типами, попробуйте сделать класс-обертку, умеющий содержать в себе данные нужного типа и содержащий методы, перегруженные для работы с различными типами. Как вам предложил камрад Bers где-то в предыдущих постах. Пусть это обозвали унылым и топорным способом, но для начала в самый раз, по крайней мере не шибко трудно. Собственно, тута.
0
|
2 / 1 / 2
Регистрация: 17.11.2010
Сообщений: 121
|
|
30.11.2011, 15:48 [ТС] | 56 |
Задание таково: Пользователь выбирает тип данных, выполняются операции с множеством (пересечение, разность - все реализовано уже в виде шаблона и отлажено),
затем опять возврат в меню, выбирается другой тип и опять та же работа с ними.... Все типы данных по отдельности работают нормально, и по условию одновременно идет работа только с одним типом множества...
0
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
30.11.2011, 15:49 | 57 |
Fantom.AS, Ну тогда смотрите пост №42
0
|
2 / 1 / 2
Регистрация: 17.11.2010
Сообщений: 121
|
|||||||||||
30.11.2011, 16:33 [ТС] | 58 | ||||||||||
То есть сделать так: например:
а потом:
0
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
||||||
30.11.2011, 16:40 | 59 | |||||
Fantom.AS, По сути да. Примерно. А дальше от вашего задания зависит.
Добавлено через 28 секунд
0
|
2 / 1 / 2
Регистрация: 17.11.2010
Сообщений: 121
|
|
30.11.2011, 16:41 [ТС] | 60 |
ой, да... про void забыл)
0
|
30.11.2011, 16:41 | |
30.11.2011, 16:41 | |
Помогаю со студенческими работами здесь
60
Как на VB 7 создать новый тип данных(свой)? Функциональный тип через typedef Определяя класс в PHP, мы создаем новый ТИП данных? Проблема с typedef и FILE* Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |