Массивы в классе |
Здравствуйте, гость ( Вход | Регистрация )
Массивы в классе |
kvak |
6.9.2010, 12:47
Сообщение
#1
|
Студент Группа: Участник Сообщений: 51 Регистрация: 5.5.2010 Пользователь №: 1690 Спасибо сказали: 1 раз(а) Репутация: 0 |
Здравствуйте. Вопрос касается двумерных массивов.
Стандартного и QVector Мне нужно, чтобы массив стал общедоступен внутри всех функций моего класса. 1. В файле header.h объявляю массив int order_id[12][6]; В файле order.cpp, который подключает мой header.h пытаюсь инициализировать массив. order_id[12][6] ={ {0, 0, 0, 1, 0, 2}, //.........и так далее }; -------- компилятор выдает ошибку. Лишь когда я в файле order.cpp сразу объявляю и инициализирую массив, то все получается. Но тогда я не смогу его использовать как данное-член моего класса. Как быть ? 2. Второй вопрос касается двумерного массива QVector В файле header.h объявляю двемерный массив QVector. В файле order.cpp мне надо выполнить функцию resize, чтобы массив стал 12 на 6. Не получается с двумя переменными. Как это можно сделать ? Также насчет заполнения QVector. Также как я это делал со стандартным массивом. тут не получается. Заполнять QVector обращаюсь к каждомй индексу это единственный способ его заполнить ? |
|
|
Алексей1153 |
6.9.2010, 13:14
Сообщение
#2
|
фрилансер Группа: Участник Сообщений: 2939 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
Мне нужно, чтобы массив стал общедоступен внутри всех функций моего класса. это автоматически и так происходит 1) заполняй в конструкторе. А ещё лучше - используй вектор и заполняй там же 2) двумерный массив [N][M] - это одномерный массив размером [N*M] . А в остальном - всё по пункту 1. по пункту 2 - это в зависимости от задачи, так как бывает удобно и массив указателей на массивы делать, и один цельный массив (как написано выше) Заполнять QVector обращаюсь к каждомй индексу это единственный способ его заполнить ? можно заполнить из ресурсов, из файла или из статического массива |
|
|
kvak |
6.9.2010, 18:21
Сообщение
#3
|
Студент Группа: Участник Сообщений: 51 Регистрация: 5.5.2010 Пользователь №: 1690 Спасибо сказали: 1 раз(а) Репутация: 0 |
Я еще новичок, кое-что не понял.
Как мне правильно объявить массив (не QVector) в описании класса Когда я в заголовочном пишу в описании класса допустим int order[12][6]; а потом в конструкторе в файле cpp делаю заполнение, например order[0][0] = 1, то выдает ошибку. Так что нельзя делать что-ли ? 2. Так как сделать resize для двумерного QVector. Покажите код, если такая функция работает и для двумерного. 3. Покажите пожалуйста код, можно ли заполнить массив QVector более удобно, чем обращаясь к каждому индексу. |
|
|
Алексей1153 |
6.9.2010, 19:38
Сообщение
#4
|
фрилансер Группа: Участник Сообщений: 2939 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
попробую более развёрнуто
инициализировать массив можно можно так
обрати внимание на важную деталь: массив с данными для инициализации в конструкторе объявлен как static. Таким образом, массив располагается не в стеке функции и инициализируетсяч всего один раз. А вот копирование из него в массив класса будет происходить в каждом конструкторе Цитата Так как сделать resize для двумерного QVector. Покажите код, если такая функция работает и для двумерного. 2+3. QVector я не пользовался, но сделаешь по аналогии ) Для начала скажу, что двумерных векторов не бывает.
Сообщение отредактировал Алексей1153 - 6.9.2010, 19:39 |
|
|
kvak |
6.9.2010, 21:30
Сообщение
#5
|
Студент Группа: Участник Сообщений: 51 Регистрация: 5.5.2010 Пользователь №: 1690 Спасибо сказали: 1 раз(а) Репутация: 0 |
Спасибо.
А это не двумерный QVector ? QVector< QVector<int> > vector; |
|
|
Алексей1153 |
6.9.2010, 21:35
Сообщение
#6
|
фрилансер Группа: Участник Сообщений: 2939 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
это вектор векторов. Можно и двумерным считать, но такой массив будет в памяти не единым куском, а раскидан (в общем случае) в отличие от цельного массива, лежащего в одном векторе.
|
|
|
kwisp |
8.9.2010, 14:40
Сообщение
#7
|
астарожна ынтжинэр Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: 23 |
|
|
|
Текстовая версия | Сейчас: 19.4.2024, 14:27 |