AIV
Гость
|
|
« : 11-08-2004 07:05 » |
|
Подскажите пожалуйста можно ли определить параметр шаблона класс или простой тип?
|
|
|
Записан
|
|
|
|
Pu
Большой босс
Offline
78
|
|
« Ответ #1 : 11-08-2004 07:17 » |
|
AIV, вообще то, как я понимаю, в С++ класс или простой тип - то и то является типами, один встроенный, другой пользовательский. Разница между ними весьма условна и компилятору пофиг, пользователь определил тип иль он уже встроен. Те разницы нет, я так понимаю данный вопрос.
|
|
|
Записан
|
Насколько я опытен? Достаточно, чтобы понимать, что дураков нельзя заставить думать по–другому, но недостаточно, чтобы отказаться от попыток это сделать. (с) Артур Джонс
|
|
|
AIV
Гость
|
|
« Ответ #2 : 11-08-2004 07:22 » |
|
Проблема следующая: я malloc'ом распределяю память под переменную типа T и мне надо если это класс вызвать конструктор класса. Соответсвенно для простых типов конструкторов нет.... и для того чтобы определить вызывать конструктор или нет надо знать тип Т класс или нет.
|
|
|
Записан
|
|
|
|
Pu
Большой босс
Offline
78
|
|
« Ответ #3 : 11-08-2004 07:28 » |
|
AIV, ошибаешься стандартные типы также имеют конструкторы следующие записи эквивалентны: int i = 2; int i(2);
|
|
|
Записан
|
Насколько я опытен? Достаточно, чтобы понимать, что дураков нельзя заставить думать по–другому, но недостаточно, чтобы отказаться от попыток это сделать. (с) Артур Джонс
|
|
|
AIV
Гость
|
|
« Ответ #4 : 11-08-2004 07:48 » |
|
Очень биг спасибо за науку!!!!
|
|
|
Записан
|
|
|
|
Pu
Большой босс
Offline
78
|
|
« Ответ #5 : 11-08-2004 07:52 » |
|
AIV, у големов нет проблемов . Заходи.
|
|
|
Записан
|
Насколько я опытен? Достаточно, чтобы понимать, что дураков нельзя заставить думать по–другому, но недостаточно, чтобы отказаться от попыток это сделать. (с) Артур Джонс
|
|
|
Serega
Гость
|
|
« Ответ #6 : 11-08-2004 08:25 » |
|
Также можно использовать type_traits
|
|
|
Записан
|
|
|
|
Pu
Большой босс
Offline
78
|
|
« Ответ #7 : 11-08-2004 08:59 » |
|
Serega, Можно чуть поподробнее? плизз!
|
|
|
Записан
|
Насколько я опытен? Достаточно, чтобы понимать, что дураков нельзя заставить думать по–другому, но недостаточно, чтобы отказаться от попыток это сделать. (с) Артур Джонс
|
|
|
npak
|
|
« Ответ #8 : 11-08-2004 11:14 » |
|
AIV, рисковый парень, malloc'ом пользоваться для объектов. Можно получить по башке, если компилятор что-нить к объекту цепляет.
Почему бы не пользоваться 'new'?
|
|
|
Записан
|
|
|
|
Антон (LogRus)
|
|
« Ответ #9 : 12-08-2004 13:59 » |
|
а пробовал? allocator<T>::constract uninitialized_fill raw_storage_iterators
читай советы 10-11 в книге "Эффекстивное использование STL" (Effective STL)
|
|
|
Записан
|
Странно всё это....
|
|
|
Антон (LogRus)
|
|
« Ответ #10 : 14-08-2004 07:24 » |
|
new может получать адрес уже выделеной под объект памяти и создавать в её объеме структуры объекта также вызывая конструктор. void *ptr = malloc(sizeof(sometype));
sometype *vptr = new (ptr) sometype;
......................
vptr->~sometype(); free(ptr);
|
|
« Последнее редактирование: 30-11-2007 22:17 от Алексей1153++ »
|
Записан
|
Странно всё это....
|
|
|
|