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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.03.2013, 13:18   #1
Sektr63
Пользователь
 
Регистрация: 29.01.2012
Сообщений: 33
По умолчанию Указатель

Есть указатель
Код:
void* a;
Возможно ли преобразовать его к другому типу, скажем к int и после этого выделить память под массив типа int?
Sektr63 вне форума Ответить с цитированием
Старый 30.03.2013, 13:27   #2
ROD
Linux C++ Qt ARM
Старожил
 
Аватар для ROD
 
Регистрация: 30.11.2008
Сообщений: 3,030
По умолчанию

Можно, но зачем?

Код:
//как-то так
void* a;
a= (void*) new int[10];
(int*)a[0]=10;
Дилетант широкого профиля.

"Слова ничего не стоят - покажите мне код!" © Линус Торвальдс
ROD вне форума Ответить с цитированием
Старый 30.03.2013, 13:32   #3
Sektr63
Пользователь
 
Регистрация: 29.01.2012
Сообщений: 33
По умолчанию

Мне нужно создать массив, не зная какого он будет типа, я решил сделать вот так.
Sektr63 вне форума Ответить с цитированием
Старый 30.03.2013, 13:37   #4
Sektr63
Пользователь
 
Регистрация: 29.01.2012
Сообщений: 33
По умолчанию

Ваш пример не работает:

error: pointer of type `void *' used in arithmetic
error: `void*' is not a pointer-to-object type
Sektr63 вне форума Ответить с цитированием
Старый 30.03.2013, 13:48   #5
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,119
По умолчанию

Sektr63

Возможно ли преобразовать его к другому типу, скажем к int и после этого выделить память под массив типа int?

с указателем можно делать всё.

void* p = ...

reinterpret_cast<int*>(p)[0] = ...;
Rififi вне форума Ответить с цитированием
Старый 30.03.2013, 14:12   #6
220Volt
Форумчанин
 
Регистрация: 14.12.2012
Сообщений: 668
По умолчанию

Только нужно помнить, что в случаи сложных объектов, соответствующие деструкторы вызваны не будут. И не забываем удалять массива так (если сложный тип): delete []array;
220Volt вне форума Ответить с цитированием
Старый 30.03.2013, 15:52   #7
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,330
По умолчанию

Цитата:
Сообщение от Sektr63 Посмотреть сообщение
Мне нужно создать массив, не зная какого он будет типа, я решил сделать вот так.
А зачем такой массив? Лучше либо использовать шаблоны, либо сделать массив указателей на базовый тип класса и добавлять указатели на наследников - да здраствует полиморфизм...
waleri вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Передать указатель на указатель в функцию erro Общие вопросы C/C++ 3 29.10.2012 17:59
указатель this Madmaxisss Visual C++ 7 25.07.2011 23:31
*указатель = *указатель tiger() Общие вопросы C/C++ 7 10.05.2011 12:49
Указатель... Romario92 Общие вопросы C/C++ 16 22.10.2010 20:37
(!)указатель на указатель(!) (C)stalin(Cpp) Общие вопросы C/C++ 0 07.06.2009 15:32