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

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

Восстановить пароль Регистрация
 
Izual
 Аватар для Izual
93 / 118 / 6
Регистрация: 13.11.2012
Сообщений: 1,517
20.04.2016, 09:37     Динамический массив типа void #1
Объявлен двумерный массив в глобальных:
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;
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Izual
 Аватар для Izual
93 / 118 / 6
Регистрация: 13.11.2012
Сообщений: 1,517
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
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,919
Записей в блоге: 2
Завершенные тесты: 1
20.04.2016, 11:42     Динамический массив типа void #3
Цитата Сообщение от Izual Посмотреть сообщение
удаление через delete[] правильно сработает с таким двумерным массивом?
Если там будут не POD типы, то неправильно.

Что касается преобразований, то вот: Неявное приведение указателей на классы
Izual
 Аватар для Izual
93 / 118 / 6
Регистрация: 13.11.2012
Сообщений: 1,517
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
Ответ Создать тему
Опции темы

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