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

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

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

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

Передача массива в метод класса
Здравствуйте, я не могу понять почему я не выходит передать статический массив в метод класса по...

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

Передача в функцию метод класса
Не получается передать в функцию метод класса... ...

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

9
584 / 387 / 216
Регистрация: 20.01.2013
Сообщений: 1,169
07.03.2013, 01:11 2
Статический двумерный массив
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
4264 / 3323 / 925
Регистрация: 25.03.2012
Сообщений: 12,520
Записей в блоге: 1
07.03.2013, 01:34 3
точно также как и в обычную функцию. Если ты решил изучать С++, перескакивая с темы на тему, лучше брось это.
Массивы передаются указателем на первый элемент.
Цитата Сообщение от egor2116 Посмотреть сообщение
Статический двумерный массив
Динамический двумерный
ИМХО, разницы никакой. Можно поменять местами подписи и передавать хоть статический, хоть динамический. Или ты ради того, чтоб передать динамический массив, объявишь второй раз другую функцию?
0
584 / 387 / 216
Регистрация: 20.01.2013
Сообщений: 1,169
07.03.2013, 01:42 4
объявишь второй раз другую функцию?
Нет, лишь привожу человеку пример вариантов синтаксиса
0
4264 / 3323 / 925
Регистрация: 25.03.2012
Сообщений: 12,520
Записей в блоге: 1
07.03.2013, 01:53 5
Цитата Сообщение от egor2116 Посмотреть сообщение
Нет, лишь привожу человеку пример вариантов синтаксиса
Ясно, просто это прозвучало как "первый вариант работает только для статических массивов, второй только для динамических"
0
584 / 387 / 216
Регистрация: 20.01.2013
Сообщений: 1,169
07.03.2013, 02:00 6
Ясно, просто это прозвучало как
Извеняюсь за туман.
0
127 / 131 / 11
Регистрация: 25.12.2011
Сообщений: 443
07.03.2013, 02:05 7
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
584 / 387 / 216
Регистрация: 20.01.2013
Сообщений: 1,169
07.03.2013, 02:11 8
Да, определенно человек который испытывает проблему при передаче массива в метод, не смутится увидив это
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  [ТС] 9
Всем огромное спасибо. Разобрался
0
Эксперт С++
5057 / 3117 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
11.03.2013, 15:32 10
Цитата Сообщение от 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
11.03.2013, 15:32
BasicMan
Эксперт
19315 / 2622 / 84
Регистрация: 17.02.2009
Сообщений: 10,364
Блог
11.03.2013, 15:32
Помогаю со студенческими работами здесь

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

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

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

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

Передача переменной в метод open() объекта класса fstream
При попытке передать переменную в метод объекта класса fstream выдаёт ошибку &quot;error: no matching...

Передача строкового многомерного массива в метод Класса
Здравствуйте. Пытаюсь отправить строковый многомерный массив в метод Класса, но выдает ошибки. ...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru