Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

Здесь нужно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 27.07.2009, 11:54   #1
jojahti
Подтвердите свой е-майл
 
Аватар для jojahti
 
Регистрация: 27.07.2009
Сообщений: 437
Вопрос Инициализация массивов в конструкторе.

Что-то не пойму. Положим обычные переменные в конструкторе инициализируются путём. А вот если массив? Просто запихнуть в скобки нечто вида, ну то бишь обыкновенную инициализацию {{1, 2, ....}, {1, ...}, .....} не прокатывает.

Код:
class board
 {  private:
       int t[7][20];         

    public:
      board() : t()
      {}
       }                            
};

Последний раз редактировалось Sazary; 27.07.2009 в 12:43.
jojahti вне форума   Ответить с цитированием
Старый 27.07.2009, 12:45   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Нужно инициализировать каждый элемент. Например, так:
Код:
class board
 {  private:
       int t[7][20];

    public:
      board()
       {
        for(int i=0; i<7; i++)
         for(int j=0; j<20; j++)
          t[i][j] = i+j;
       }

};
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума   Ответить с цитированием
Старый 27.07.2009, 13:03   #3
jojahti
Подтвердите свой е-майл
 
Аватар для jojahti
 
Регистрация: 27.07.2009
Сообщений: 437
По умолчанию

Тьфу блин да нет же.
Мну надо это сделать в конструкторе. Причём так, что-бы можно было это нормально редактировать. (это будущая карта уровня для пакмэна )

Вот так к примеру можно закидать дефолтные значения в переменную при её создании.

Код:
int t[7][20] =
{{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}};
По логике примерно это же можно сделать и в конструкторе. Тока синтаксис там походу немного другой. Т.к. компиляторам не нравятся скобочки, они на них ругаются и требуют себе точек с запятыми.
Конечно можно создать и инициализировать массив через метод. Но это как-то менее красиво и более через <censored>. Да и хотелось бы разобраться с конструкторами.

Последний раз редактировалось Sazary; 27.07.2009 в 13:11.
jojahti вне форума   Ответить с цитированием
Старый 27.07.2009, 13:06   #4
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Сообщение от jojahti
Мну надо это сделать в конструкторе.
А по-вашему у меня это где сделано? Это и есть конструктор.
Карту можете вынести в файл или отдельный массив, а в конструкторе проводить заполнение/копирование.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума   Ответить с цитированием
Старый 27.07.2009, 13:11   #5
jojahti
Подтвердите свой е-майл
 
Аватар для jojahti
 
Регистрация: 27.07.2009
Сообщений: 437
По умолчанию

В конструкторе. А вот такую карту мне тоже по одному элементику заполнять?

{{2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
{2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
{2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
{2, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
{2, 1, 1, 1, 1, 2, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1},
{2, 1, 1, 1, 1, 2, 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1},
{2, 2, 2 , 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}};
jojahti вне форума   Ответить с цитированием
Старый 27.07.2009, 13:11   #6
rangerx
Пользователь
 
Регистрация: 30.05.2009
Сообщений: 46
По умолчанию

Цитата:
это будущая карта уровня для пакмэна
Берите числа из файла, и инициализируйте массив в конструкторе(естественно, если ваш массив имеет более сложную структуру, чем та, что вы привели).
Цитата:
По логике примерно это же можно сделать и в конструкторе.
Нет.
Есть такой вариант, но он вам врядли подойдет:
Код:
class board
{
    public:
        static int t[];
        board(){}
};
int board::t[] = {1,2,3,4,5,6,7};
rangerx вне форума   Ответить с цитированием
Старый 27.07.2009, 13:21   #7
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,521
По умолчанию

Цитата:
Сообщение от rangerx Посмотреть сообщение
Есть такой вариант, но он вам врядли подойдет
Развивая идею статических членов:
В теле конструктора в цикле сливать элементы из статического массива уже в конкретный массив-член класса. Или же можно глянуть в сторону какого-нибудь std::copy для переброса значений всем куском за раз без всяких циклов.
ЗЫ. В списке инициализации никак массив не получится инициализировать.
pu4koff вне форума   Ответить с цитированием
Старый 27.07.2009, 13:30   #8
jojahti
Подтвердите свой е-майл
 
Аватар для jojahti
 
Регистрация: 27.07.2009
Сообщений: 437
По умолчанию

rangerx
Цитата:
Есть такой вариант
Гм. Прикольно. А можно похожим манером, но двумерный массив?
jojahti вне форума   Ответить с цитированием
Ответ

Опции темы

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
инициализация графического режима в Паскале Dimanduc Помощь студентам 11 26.05.2010 17:49
Инициализация загружаемых компонент Oburec Компоненты Delphi 0 12.07.2009 19:04
инициализация массива Arcueid1691 Паскаль, Turbo Pascal, PascalABC.NET 2 01.06.2009 02:36
Инициализация TListView Oburec Компоненты Delphi 0 04.05.2009 00:30
Инициализация окна Anny Общие вопросы Delphi 9 13.03.2007 12:48


10:32.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.