Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 20, средняя оценка - 5.00
slaaavyn
0 / 0 / 0
Регистрация: 05.01.2013
Сообщений: 6
#1

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

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

Здравствуйте уважаемые форумчане. Намекните пожалуйста (если можно с примером) как решить следующую проблему: У меня есть двухмерный символьный массив 15х20
C++
1
char map[width][height];
и есть класс с методом который должен использовать этот массив.
Как мне передать массив в метод класса?
Заранее благодарен за ответ.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.03.2013, 00:49
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Передача массива в метод класса (C++):

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

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

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

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

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

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

9
egor2116
341 / 372 / 42
Регистрация: 20.01.2013
Сообщений: 1,130
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 )
...
};
1
Kuzia domovenok
1892 / 1747 / 119
Регистрация: 25.03.2012
Сообщений: 5,936
Записей в блоге: 1
07.03.2013, 01:34 #3
точно также как и в обычную функцию. Если ты решил изучать С++, перескакивая с темы на тему, лучше брось это.
Массивы передаются указателем на первый элемент.
Цитата Сообщение от egor2116 Посмотреть сообщение
Статический двумерный массив
Динамический двумерный
ИМХО, разницы никакой. Можно поменять местами подписи и передавать хоть статический, хоть динамический. Или ты ради того, чтоб передать динамический массив, объявишь второй раз другую функцию?
0
egor2116
341 / 372 / 42
Регистрация: 20.01.2013
Сообщений: 1,130
07.03.2013, 01:42 #4
объявишь второй раз другую функцию?
Нет, лишь привожу человеку пример вариантов синтаксиса
0
Kuzia domovenok
1892 / 1747 / 119
Регистрация: 25.03.2012
Сообщений: 5,936
Записей в блоге: 1
07.03.2013, 01:53 #5
Цитата Сообщение от egor2116 Посмотреть сообщение
Нет, лишь привожу человеку пример вариантов синтаксиса
Ясно, просто это прозвучало как "первый вариант работает только для статических массивов, второй только для динамических"
0
egor2116
341 / 372 / 42
Регистрация: 20.01.2013
Сообщений: 1,130
07.03.2013, 02:00 #6
Ясно, просто это прозвучало как
Извеняюсь за туман.
0
kamre
126 / 130 / 4
Регистрация: 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
egor2116
341 / 372 / 42
Регистрация: 20.01.2013
Сообщений: 1,130
07.03.2013, 02:11 #8
Да, определенно человек который испытывает проблему при передаче массива в метод, не смутится увидив это
C++
1
2
 template <int N, int M>
    void func(char (&map)[N][M]) {
2
slaaavyn
0 / 0 / 0
Регистрация: 05.01.2013
Сообщений: 6
07.03.2013, 10:22  [ТС] #9
Всем огромное спасибо. Разобрался
0
silent_1991
Эксперт С++
4985 / 3042 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.03.2013, 15:32
Привет! Вот еще темы с ответами:

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

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

Метод-член класса для создания одномерного массива из отрицательных элементов двумерного динамического массива - C++
Помогите, пожалуйста, нужно разработать метод-член класса для создания одномерного массива из отрицательных элементов двумерного...

Передача массива одного класса в другой С++ - C++
Доброго времени суток. Столкнулся с проблемой, есть класс который заполняет массив, этот массив нужен в другом классе. Как мне передать...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru