|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
09.08.2010, 17:37 | #1 |
Регистрация: 09.08.2010
Сообщений: 7
|
динамическое изменение типа переменной
Всем привет, я только недавно начал вникать в азы программирования и сейчас, делая проект, столкнулся с такой проблемой, что не возникает никаких толковых идей, на подобный форум обращаюсь первый раз, надеюсь что мне помогут.
Суть проблемы следующая: у нас есть класс (attribute) у этого класса есть 2 переменных - первая это name типа String(очевидно что имя) и data неизвестного типа. Есть еще один класс (node) который в свою очередь содержит переменнтую attr такого вот типа std::list<attribute>. Как уже наверное стало ясно переменная attr является списком аттрибутов для каждого объекта node, но тип данных (переменной data) у каждого аттрибута может быть любой. Дак вот, в чем собственно проблема-то, в том, что нужно указать тип переменной data в классе attribute, и шаблоны тут использовать не получится это точно, я не знаю как эту проблему обойти так, чтобы это было не слишком затратно, а все происходило динамически в зависимости от ситуации. Как мне говорил друг, разработчики vc++ планируют ввести тип variable который будет принимать значения всех типов, это то что мне нужно, но пока этого не произошло и поэтому нужно как-то решать проблему! Надеюсь на вашу помощь. Последний раз редактировалось L@m@k; 10.08.2010 в 10:55. |
09.08.2010, 22:11 | #2 |
Регистрация: 20.12.2009
Сообщений: 4
|
Переменная data инициализируется при создании обьекта?
|
10.08.2010, 07:48 | #3 |
Регистрация: 09.08.2010
Сообщений: 7
|
да, она либо по умолчанию задается как string("") либо в зависимости от типа указанного в конструкторе, вот несколько способов как можно создать объект:
attribute A("A","qwerty"); attribute B("B",13); attribute C("C",true); attribute D("D",13.5); ........ в итоге у всех объектов есть лишь 1 переменнная data, только разных типов. А и конструктор по умолчанию attribute E; тогда E.name будет=Default , а E.data будет="" Последний раз редактировалось L@m@k; 10.08.2010 в 07:50. |
10.08.2010, 07:50 | #4 |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
Полиморфизм, не? А в классе работать с указателями.
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика |
10.08.2010, 07:53 | #5 |
Регистрация: 09.08.2010
Сообщений: 7
|
кстате да, я немного неверно задал тип пераменной класса node, там скорее будет std::list<attribute*>, чтобы не создавать лишних копий, но сути проблемы это не меняет, а полиморфизм помойму тут не причем
появилась такая идея - использовать тип void* , но я плохо с ним знаком, может кто популярно изложить его основные моменты? Последний раз редактировалось Stilet; 11.08.2010 в 07:34. |
11.08.2010, 07:19 | #6 |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
Точно полиморфмизм не нравится ?
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика |
11.08.2010, 08:22 | #7 |
Регистрация: 09.08.2010
Сообщений: 7
|
ну а как вы хотите его сюда прилепить?
|
11.08.2010, 08:36 | #8 |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
Код:
Почему бы Вам не написать три функции, вместо одной?
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика |
11.08.2010, 09:28 | #9 |
Регистрация: 09.08.2010
Сообщений: 7
|
Attribute - это конструкторы класса attribute, а не функции, я написал их, чтобы было более понятна моя цель. Это все разные конструкторы, тк тип второго параметра разный
|
11.08.2010, 15:41 | #10 |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
Ну так у класса может быть много конструкторов, верно? И про полиморфизм читали?
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Динамическое изменение даты | AvivNoa | Microsoft Office Word | 34 | 03.06.2016 21:04 |
Изменение переменной | Алексей_xXx | Общие вопросы C/C++ | 1 | 11.12.2009 10:49 |
Динамическое формирование имени переменной... | Kvinto | Общие вопросы Delphi | 9 | 17.11.2009 17:56 |
Динамическое изменение местоположения БД в ADOCONNECTION | Vol666 | БД в Delphi | 2 | 31.10.2009 07:21 |
Определение типа переменной | Игорь007 | Общие вопросы C/C++ | 7 | 10.01.2009 13:01 |