Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Izual
 Аватар для Izual
93 / 118 / 6
Регистрация: 13.11.2012
Сообщений: 1,531
#1

Динамический массив типа void - C++

20.04.2016, 09:37. Просмотров 227. Ответов 3
Метки нет (Все метки)

Объявлен двумерный массив в глобальных:
C++
1
void **buf;
Размер как и тип определяются в рантайме..
Нужно чтоб это заработало:
C++
1
2
3
4
5
buf = new DWORD* [gVset[2]];
for(int i=0;i<gVset[2];i++)
{
    buf[i] = new DWORD [gVset[3]];
}
Ну и это тоже:
C++
1
2
3
4
5
buf = new WORD* [gVset[2]];
for(int i=0;i<gVset[2];i++)
{
    buf[i] = new WORD [gVset[3]];
}
Но оно пишет ошибку:
cannot convert from 'DWORD **' to 'void **'
и соответственно тоже: Но оно пишет ошибку:
cannot convert from 'WORD **' to 'void **'
Как правильно "закастить явно" тип? (типа через скобку, а не через <any_cast>)

П.С. удаление через delete[] правильно сработает с таким двумерным массивом? Предположительно напишу как обычно:
C++
1
2
3
4
5
for(int i=0;i<gVset[2];i++)
{
    delete[] buf[i];
}
delete[] buf;
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.04.2016, 09:37     Динамический массив типа void
Посмотрите здесь:

C++ Трехмерный динамический массив типа char
Динамический массив из элементов структурного типа C++
C++ Считать данные из файла в динамический массив соответствующего типа
C++ Динамический массив из n чисел типа int.
двумерный динамический массив типа char C++
C++ Написать структуру типа STUDENT, создать динамический массив
C++ Динамический массив из элементов структурного типа
C++ Сформировать динамический массив из элементов структурного типа
Динамический массив элементов произвольного типа C++
Создать динамический массив целого типа C++
C++ Передача в функцию динамический массив объектов первого и второго типа
C++ Создать динамический массив объектов пользовательского типа

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Izual
 Аватар для Izual
93 / 118 / 6
Регистрация: 13.11.2012
Сообщений: 1,531
20.04.2016, 10:36  [ТС]     Динамический массив типа void #2
Скомпилилось так:
C++
1
2
3
4
5
buf = new WORD* [gVset[2]];
for(int i=0;i<gVset[2];i++)
{
    buf[i] =(void**) new WORD [gVset[3]];
}
Но это только лишь "скомпилилось", работоспособность проверить не могу, другие ошибки вылезли пока параллельно другое пилил.
Croessmah
Модератор
Эксперт CЭксперт С++
 Аватар для Croessmah
12508 / 7070 / 794
Регистрация: 27.09.2012
Сообщений: 17,457
Записей в блоге: 2
Завершенные тесты: 1
20.04.2016, 11:42     Динамический массив типа void #3
Цитата Сообщение от Izual Посмотреть сообщение
удаление через delete[] правильно сработает с таким двумерным массивом?
Если там будут не POD типы, то неправильно.

Что касается преобразований, то вот: Неявное приведение указателей на классы
Izual
 Аватар для Izual
93 / 118 / 6
Регистрация: 13.11.2012
Сообщений: 1,531
20.04.2016, 12:14  [ТС]     Динамический массив типа void #4
Не туда поставил приведение типа))
C++
1
2
3
4
5
buf = (void**) new WORD* [gVset[2]];
for(int i=0;i<gVset[2];i++)
{
    buf[i] = new WORD [gVset[3]];
}
Цитата Сообщение от Croessmah Посмотреть сообщение
Что касается преобразований, то вот: Неявное приведение указателей на классы
Ну у меня тоже компилится, но работа оператора может и не фига не правильной быть. А с условием что ты написал, что и delete[] не правильно сработает, то скорее всего и new[] тоже в таком случае.
Yandex
Объявления
20.04.2016, 12:14     Динамический массив типа void
Ответ Создать тему
Опции темы

Текущее время: 06:32. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru