Просмотр полной версии : Динамическая память С++
У меня проблема...
Мне нужно занести трехмерный массив массив вида int massiv[10][3][2] в динамическую память, причем обязательно через оператор New (C++)
Вся фишка в вот в чем:
в классе есть массив
int coord[10][2][3];
потом в конструкторе объявляю
coord = new int[10][2][3];
выдает ошибку
Lvalue required
helldomain
12.11.2002, 07:25
Prawilno. Slewa u tebya stoit gotowij massiw, a ne tipizirowannij pointer.
Prosteischij primer:
typedef myarray int coord[10][2][3];
myarray * mypointer=new int[10][2][3];
а можно чуть по подробнее? просто это задание по ооп в универе...
там переменная должна быть в классе, а я че то не совсем понимаю, как приспособить эту схему туда :(
helldomain
12.11.2002, 09:55
Gi, nu tak sozdaesh klass, wnutr wpisiwaesh etu peremennuju (kak ti i pisal) i s pomoshju new konstruiruesh objekt klassa.
Не мог бы ты написать тут немного в коде, плз?
Просто как я не мучался сегодня - у меня так и не получилось ничего... :баран: Может быть просто с моими манипуляторами что-то не так :idontnow:
int *pMass;
pMass = new int[10][3][2];
int i, j, h;
for(i=0; i<10; i++)
for(j=0; j<3; j++)
for(h=0; h<3; h++)
{
// ... - заполнение массива
printf("%2i", pMass[i][j][h]);
}
delete pMass[];
Или же без new мона просто открыть цикл, по выходу из которого память, используемая на объявленные в нем переменные, атоматически сама удалится :)
К примеру:
int flag = 1;
if(flag)
{
int mass[10][3][2];
// делаешь все что нужно
}
// а вот здесь при вызове элементов массива mass,
// компиляторвыдаст ошибочку, тк их просто в памяти нет
Вроде, как помнится, так должно работать :)
alexey_ma
14.11.2002, 00:29
Не откомпилируется.
Нужно так:
int (*pMass) [3][2];
pMass = new int[10][3][2];
int i, j, h;
for(i=0; i<10; i++)
for(j=0; j<3; j++)
for(h=0; h<3; h++)
{
// ... -
printf("%2i", pMass[i][j][h]);
}
delete [] pMass;
Обьявлять нужно не указатель на int, а двухмерный массив указателей на int.
Я не компилировал, а на память писал :) Короче, я думаю, что Zneff'у понятно будет :)
Как писал SaNChos
Я не компилировал, а на память писал :) Короче, я думаю, что Zneff'у понятно будет :)
Ага. У меня даже получилось :)
Большое спасибо всем! :jump:
Почему "даже"? Надо верить в свои силы, и все получится :)
Удачи :)
vBulletin® v3.8.5, Copyright ©2000-2024, Jelsoft Enterprises Ltd.