Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.02.2011, 00:21   #1
Red_Line
Пользователь
 
Аватар для Red_Line
 
Регистрация: 09.04.2009
Сообщений: 23
По умолчанию Двухмерный дин. массив в классе

Столкнулся с таким вопросом: возможно ли в поле класса инициализировать двухмерный динамический массив ? Или если нужен двухмерный или многомерный, то созд. одномерный динамический и запись в него ведётся по формуле, делающего из одномерного псевдо многомерный? Я надеюсь, объяснил понятно =))
Red_Line вне форума Ответить с цитированием
Старый 17.02.2011, 01:32   #2
daunito
Пользователь
 
Регистрация: 01.03.2008
Сообщений: 25
По умолчанию

используй STL. vector< vector<int> > - по сути двумерный массив целых чисел.
daunito вне форума Ответить с цитированием
Старый 17.02.2011, 19:03   #3
Red_Line
Пользователь
 
Аватар для Red_Line
 
Регистрация: 09.04.2009
Сообщений: 23
По умолчанию

Оу, ясно... а я тут уже сделал себе такую сист, наверно, она не очень хорошая: в поле у меня записан char** vasya, а в конструкторе я присваиваю васе массив из укзателей n
Код:
vasya=new char*[n]
соответсвенно потом с помощобю цикла for в каждый внутренний указатель записываю массив....
схема стандартная... но удаляю я из памяти всю эту байду в деструкторе и не уверен, что у меня не может быть проблем потом... всё таки по логике вещей я должен был 2 измерение массива vasya удалить в конце конструктора? Или можно так делать?
Red_Line вне форума Ответить с цитированием
Старый 17.02.2011, 22:09   #4
Red_Line
Пользователь
 
Аватар для Red_Line
 
Регистрация: 09.04.2009
Сообщений: 23
По умолчанию

Хех, вот я и нашёл проблему... объекты с динамическими массивами, как я описал выше, прировнять нельзя (( ошибка записи в закрытое пространство памяти (
Red_Line вне форума Ответить с цитированием
Старый 18.02.2011, 12:20   #5
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Возможно, вам нужно что-то вроде этого:
Код:
class Matrix
{
public:
Matrix();
~Matrix();
const Matrix& operator=(const Matrix& M);
private:
int** arr;
int N;
};

Matrix::Matrix():
 N(5)
 {
 arr = new int*[N];
 for (int i = 0; i < N; i++)
  arr[i] = new int[N];
 }
Matrix::~Matrix()
 {
 for (int i = 0; i < N; i++)
  delete[] arr[i];
 delete[] arr;
 }
const Matrix& operator=(const Matrix& M)
 {
 if (N != M.N)
  {
  for (int i = 0; i < N; i++)
   delete[] arr[i];
  delete[] arr[i];
  N = M.N;
  arr = new int*[N];
  for (int i = 0; i < N; i++)
   arr[i] = new int[N];
  }
 for (int i = 0; i < N; i++)
  for (int j = 0; j < N; j++)
   arr[i][j] = M.arr[i][j];
 }
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Трехмерный дин. массив revanatar Общие вопросы C/C++ 3 29.11.2010 22:02
С# Двухмерный массив Dron17 Общие вопросы C/C++ 2 12.10.2010 10:58
Одномерный массив , двухмерный массив Woxx Паскаль, Turbo Pascal, PascalABC.NET 0 10.09.2010 09:28
Двухмерный массив Lev.F Помощь студентам 1 30.05.2010 21:31
Двухмерный массив Atheist Общие вопросы C/C++ 4 22.11.2007 14:05