imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Компьютеры > Программирование
Опции темы
Старый 12.11.2002, 05:08     # 1
Zneff
Guest
 
Сообщения: n/a

Динамическая память С++

У меня проблема...
Мне нужно занести трехмерный массив массив вида int massiv[10][3][2] в динамическую память, причем обязательно через оператор New (C++)
 
Старый 12.11.2002, 08:03     # 2
Zneff
Guest
 
Сообщения: n/a

Вся фишка в вот в чем:
в классе есть массив
int coord[10][2][3];
потом в конструкторе объявляю
coord = new int[10][2][3];
выдает ошибку
Lvalue required
 
Старый 12.11.2002, 08:25     # 3
helldomain
Administrator
 
Аватар для helldomain
 
Регистрация: 13.05.2002
Сообщения: 11 227

helldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиург
helldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиург
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:46     # 4
Zneff
Guest
 
Сообщения: n/a

а можно чуть по подробнее? просто это задание по ооп в универе...
там переменная должна быть в классе, а я че то не совсем понимаю, как приспособить эту схему туда
 
Старый 12.11.2002, 10:55     # 5
helldomain
Administrator
 
Аватар для helldomain
 
Регистрация: 13.05.2002
Сообщения: 11 227

helldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиург
helldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиург
Gi, nu tak sozdaesh klass, wnutr wpisiwaesh etu peremennuju (kak ti i pisal) i s pomoshju new konstruiruesh objekt klassa.
__________________
Осколки прошлого, как снег, закрутит ураган времён,
В ушедший день для нас навек, обрушив мост,
Оставив в наших душах след, тьма уплывёт за горизонт,
И в чистом небе вспыхнет свет, свет новых звёзд.
helldomain вне форума  
Старый 13.11.2002, 07:35     # 6
Zneff
Guest
 
Сообщения: n/a

Не мог бы ты написать тут немного в коде, плз?
Просто как я не мучался сегодня - у меня так и не получилось ничего... Может быть просто с моими манипуляторами что-то не так
 
Старый 13.11.2002, 23:22     # 7
sanchos
::VIP::
Художник-2004
 
Аватар для sanchos
 
Регистрация: 04.11.2002
Адрес: Питер
Сообщения: 1 604

sanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэй
Код:
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, 
// компиляторвыдаст ошибочку, тк их просто в памяти нет
Вроде, как помнится, так должно работать

Последний раз редактировалось sanchos; 13.11.2002 в 23:30.
sanchos вне форума  
Старый 14.11.2002, 01:29     # 8
alexey_ma
Member
 
Регистрация: 10.03.2002
Адрес: Israel
Сообщения: 245

alexey_ma Нимб уже пробиваетсяalexey_ma Нимб уже пробивается
Не откомпилируется.
Нужно так:
Код:
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.
__________________
Best Regards

Последний раз редактировалось alexey_ma; 14.11.2002 в 01:40.
alexey_ma вне форума  
Старый 14.11.2002, 20:01     # 9
sanchos
::VIP::
Художник-2004
 
Аватар для sanchos
 
Регистрация: 04.11.2002
Адрес: Питер
Сообщения: 1 604

sanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэй
Я не компилировал, а на память писал Короче, я думаю, что Zneff'у понятно будет
sanchos вне форума  
Старый 14.11.2002, 23:34     # 10
Zneff
Guest
 
Сообщения: n/a

Цитата:
Как писал SaNChos
Я не компилировал, а на память писал Короче, я думаю, что Zneff'у понятно будет
Ага. У меня даже получилось

Большое спасибо всем!
 
Старый 15.11.2002, 19:10     # 11
sanchos
::VIP::
Художник-2004
 
Аватар для sanchos
 
Регистрация: 04.11.2002
Адрес: Питер
Сообщения: 1 604

sanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэй
Почему "даже"? Надо верить в свои силы, и все получится
Удачи
sanchos вне форума  

Опции темы

Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 10:26.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.