Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.07.2011, 00:48   #11
Granus
С++
Форумчанин
 
Аватар для Granus
 
Регистрация: 22.09.2008
Сообщений: 791
По умолчанию

Цитата:
Сообщение от ImmortalAlexSan
может глупость скажу
Сказали) тут C++, а не C#

Цитата:
Сообщение от EUGY
Но суть вопроса, как при перечислении определить тип объекта.
Вот так, например
Код:
switch(/*с list не работал, так что*/CurrentElement->Type){
  case INT:
    std::cout << CurrentElement->IntData << std::endl;
    break;
  case STRING:
    std::cout << CurrentElement->StringData << std::endl;
    break;
};
Форматируйте код, будьте людьми.
Granus вне форума Ответить с цитированием
Старый 20.07.2011, 01:08   #12
EUGY
Форумчанин
 
Аватар для EUGY
 
Регистрация: 11.07.2010
Сообщений: 914
По умолчанию

Значит нужен не union, а структура,/ как и предложил Smitt&Wesson /
struct CurrentElement
{
int Type;
void* myobjptr;
};
И для каждого типа предусматривать свое значение Type;
enum {thisisInt, thisisBool, thisisMyClass};

Криво однако

Последний раз редактировалось EUGY; 20.07.2011 в 01:18.
EUGY вне форума Ответить с цитированием
Старый 20.07.2011, 02:09   #13
Granus
С++
Форумчанин
 
Аватар для Granus
 
Регистрация: 22.09.2008
Сообщений: 791
По умолчанию

В вашем случае придется для каждого типа выделять память и приводить типы указателей. А с union'ом все проще. Вы знаете в чем суть union?)
Форматируйте код, будьте людьми.
Granus вне форума Ответить с цитированием
Старый 20.07.2011, 02:23   #14
EUGY
Форумчанин
 
Аватар для EUGY
 
Регистрация: 11.07.2010
Сообщений: 914
По умолчанию

Разумеется знаю.
В таком случае при написании нового класса придется не только добавить новую запись в enum, перегрузить функцию Add, но также добавить в union опять же указатель. И все указатели в union будут ссылаться на один и тот же участок памяти.
Вопрос зачем так громоздко.
EUGY вне форума Ответить с цитированием
Старый 20.07.2011, 02:30   #15
Granus
С++
Форумчанин
 
Аватар для Granus
 
Регистрация: 22.09.2008
Сообщений: 791
По умолчанию

Просто тогда будет несколько более удобный интерфейс у структуры) Но когда много разных классов в списке, то согласен, никакой разницы с обычным вариантом с указателем.
Форматируйте код, будьте людьми.
Granus вне форума Ответить с цитированием
Старый 20.07.2011, 03:36   #16
Сtrl
C++
Форумчанин
 
Аватар для Сtrl
 
Регистрация: 27.03.2011
Сообщений: 803
По умолчанию

Не каждый класс может быть частью union, это раз. Перечислять возможные классы в enum - извращение, это два. Мне это уже не нужно (а кому нужно - меняйте архитектуру приложения), это три (об этом я еще в сообщении #4 сказал).
Ищете информацию по C++?
cplusplus.com
Сtrl вне форума Ответить с цитированием
Старый 20.07.2011, 03:57   #17
Granus
С++
Форумчанин
 
Аватар для Granus
 
Регистрация: 22.09.2008
Сообщений: 791
По умолчанию

Цитата:
Не каждый класс может быть частью union
Почему?
А хотя бы указатель точно может.
Цитата:
Перечислять возможные классы в enum - извращение, это два.
А это почему? Так лучше, что ли
Код:
#define TYPE_INTEGER 1
#define TYPE_STRING 2
#define TYPE_COOLCLASS 3
Или Вы хотите чтобы эти имена были связаны с реальными типами данных?
Форматируйте код, будьте людьми.
Granus вне форума Ответить с цитированием
Старый 20.07.2011, 04:07   #18
Сtrl
C++
Форумчанин
 
Аватар для Сtrl
 
Регистрация: 27.03.2011
Сообщений: 803
По умолчанию

Цитата:
Или Вы хотите чтобы эти имена были связаны с реальными типами данных?
Я уже ничего такого не хочу. Но изначально затея была именно в этом. Потому что перечисление типа в enum - это дублирование сущности, а макросы - великое и ужасное наследие C.
Цитата:
Почему?
Технические сложности с конструкторами и деструкторами.
Ищете информацию по C++?
cplusplus.com
Сtrl вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
приведение типов??? nikozavr C# (си шарп) 1 14.05.2011 22:29
Преобразование типов jungle Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 04.12.2010 19:41
Приведение типов массива объектов Arnezami Общие вопросы .NET 3 17.12.2009 11:30
При написании кода не открывается список типов, объектов. garic Microsoft Office Excel 3 14.03.2009 18:56
не соответствие типов amandra SQL, базы данных 6 30.06.2008 18:04