@s2sk1337

Не получается сделать динамический указатель?

Привет.

Нужно сделать двухмерный динамический массив указателей типа ID3D11Buffer (DirectX 11 указатель на буфер).

Пишу так:

ID3D11Buffer*** g_pVertexBuffer = new ID3D11Buffer**[];


На что компилятор реагирует так:

"Ошибка C3078 размер массива должен быть указан в новых выражениях"

В чем проблема?
  • Вопрос задан
  • 503 просмотра
Решения вопроса 1
Taraflex
@Taraflex
Ищу работу. Контакты в профиле.
В квадратных скобках укажите размер
class ID3D11Buffer{};//объявим заглушку для примера

using PID3D11Buffer = ID3D11Buffer*;
using PPID3D11Buffer = PID3D11Buffer*;

int main()
{
    PPID3D11Buffer* g_pVertexBuffer = new PPID3D11Buffer[42];
}

Но вообще с таким подходом вы быстро запутаетесь. Используйте std::vector для массивов изменяемых размеров и std::array для неизменных.
Если же нужно обязательно объявление new sometype[count], то используйте вместо него en.cppreference.com/w/cpp/memory/unique_ptr/make_unique
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
coremission
@coremission
Профессиональный программист игр.
Когда вы пишите так:
ID3D11Buffer*** g_pVertexBuffer = new ID3D11Buffer**[];

Компилятор спрашивает Вас какого размера блок памяти тебе нужно выделить?!
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы