Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.68/92: Рейтинг темы: голосов - 92, средняя оценка - 4.68
0 / 0 / 0
Регистрация: 05.01.2013
Сообщений: 6

Передача массива в метод класса

07.03.2013, 00:49. Показов 17671. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте уважаемые форумчане. Намекните пожалуйста (если можно с примером) как решить следующую проблему: У меня есть двухмерный символьный массив 15х20
C++
1
char map[width][height];
и есть класс с методом который должен использовать этот массив.
Как мне передать массив в метод класса?
Заранее благодарен за ответ.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
07.03.2013, 00:49
Ответы с готовыми решениями:

Передача массива в метод класса
Здравствуйте, я не могу понять почему я не выходит передать статический массив в метод класса по указателю. Смтр. строку 54. Объясните...

Передача массива классов в метод класса
1. этап. Разработать библиотеку функций(h-файл) для выполнения: – чтения базы данных из файла; //read() – печати на экран; //print()...

Передача в функцию метод класса
Не получается передать в функцию метод класса... hge->System_SetState(HGE_FRAMEFUNC,&GameManager::UpdateScene); ...

9
 Аватар для egor2116
584 / 387 / 216
Регистрация: 20.01.2013
Сообщений: 1,169
07.03.2013, 01:11
Статический двумерный массив
C++
1
2
3
4
5
6
class Test
{
...
void Print(char map[][],int width,int height )
...
};
Динамический двумерный
C++
1
2
3
4
5
6
class Test
{
...
void Print(char **map,int width,int height )
...
};
2
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,532
Записей в блоге: 1
07.03.2013, 01:34
точно также как и в обычную функцию. Если ты решил изучать С++, перескакивая с темы на тему, лучше брось это.
Массивы передаются указателем на первый элемент.
Цитата Сообщение от egor2116 Посмотреть сообщение
Статический двумерный массив
Динамический двумерный
ИМХО, разницы никакой. Можно поменять местами подписи и передавать хоть статический, хоть динамический. Или ты ради того, чтоб передать динамический массив, объявишь второй раз другую функцию?
0
 Аватар для egor2116
584 / 387 / 216
Регистрация: 20.01.2013
Сообщений: 1,169
07.03.2013, 01:42
объявишь второй раз другую функцию?
Нет, лишь привожу человеку пример вариантов синтаксиса
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,532
Записей в блоге: 1
07.03.2013, 01:53
Цитата Сообщение от egor2116 Посмотреть сообщение
Нет, лишь привожу человеку пример вариантов синтаксиса
Ясно, просто это прозвучало как "первый вариант работает только для статических массивов, второй только для динамических"
0
 Аватар для egor2116
584 / 387 / 216
Регистрация: 20.01.2013
Сообщений: 1,169
07.03.2013, 02:00
Ясно, просто это прозвучало как
Извеняюсь за туман.
0
127 / 131 / 11
Регистрация: 25.12.2011
Сообщений: 443
07.03.2013, 02:05
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
 
class A {
public:
    template <int N, int M>
    void func(char (&map)[N][M]) {
        std::cout << "N=" << N << ", M=" << M << std::endl;
    }
};
 
 
int main() {
    char map[10][20];
    A a;
    a.func(map);
}
1
 Аватар для egor2116
584 / 387 / 216
Регистрация: 20.01.2013
Сообщений: 1,169
07.03.2013, 02:11
Да, определенно человек который испытывает проблему при передаче массива в метод, не смутится увидив это
C++
1
2
 template <int N, int M>
    void func(char (&map)[N][M]) {
2
0 / 0 / 0
Регистрация: 05.01.2013
Сообщений: 6
07.03.2013, 10:22  [ТС]
Всем огромное спасибо. Разобрался
0
Эксперт С++
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
11.03.2013, 15:32
Цитата Сообщение от egor2116 Посмотреть сообщение
C++
1
void Print(char map[][],int width,int height )
Это вообще не сработает. Да, записи int foo[] и int *foo в списке формальных параметров функции взаимозаменяемы, но про int foo[][] и int **foo этого сказать нельзя. Писать int foo[][] вообще нельзя, поскольку компилятор обязан знать все размерности массива, кроме первой (они обязаны быть константами времени компиляции).
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Можно поменять местами подписи и передавать хоть статический, хоть динамический
Неверно. В функцию, принимающую type arr[][SIZE], передать двойной указатель нельзя. То же самое наоборот, в функцию, принимающую type **arr, не получится передать статический двумерный массив.

Всё это вытекает из того, что указатель на статический двумерный массив имеет тип не type **, а type (*)[SIZE], именно такой, с учётом SIZE. Таким образом, указатели на массивы int arr1[10][10] и int arr2[10][20] имеют на самом деле разные типы, и они несовместимы.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.03.2013, 15:32
Помогаю со студенческими работами здесь

Передача объекта в метод класса
здравствуйте. в процессе написания программы возник такой вопрос. можно ли при вызове метода некоторого класса для объекта А, передать в ...

Передача define в метод класса
Подскажите, есть множество define, как мне передать одну их них в метод класса?

Передача переменных из функции в метод класса
У меня есть главная функция и класс, в котором есть 2 функции. Как мне после выполнения 1-й функции с класса вывести с нее 3 переменных...

Передача класса по ссылки в метод (ругается)
Среда Linux gcc 4.1.2 Есть прототип метода (класса Time) Time Time::Sum(const Time &amp; t)const; И скажем такой код, передаем...

Передача неизвестного объекта в метод класса
Ситуация такова: имеется класс (в зачаточном состоянии) class Archer { private: double penRate; public: Archer(void); ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru