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

двумерный массив в качестве параметра метода класса - C++

Восстановить пароль Регистрация
 
Stingo
1 / 1 / 0
Регистрация: 29.11.2013
Сообщений: 10
29.11.2013, 10:09     двумерный массив в качестве параметра метода класса #1
Добрый день
Есть проблемка, попробую упростить условия по максимуму:
В программе меется некоторый класс, у этого класса есть метод, этот метод должен определить размерность некоторого переданного ему массива, массивов этих в программе несколько, все они двухмерные.

Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//допустим, это массивы
int arr3x3 [3][3] = {{3,3,3},{3,3,3},{3,3,3}};
int arr4x4 [4][4] = {{4,4,4,4},{4,4,4,4},{4,4,4,4},{4,4,4,4}};
int arr5x5 [5][5] = {{5,5,5,5,5},{5,5,5,5,5},{5,5,5,5,5},{5,5,5,5,5},{5,5,5,5,5}};
 
//это класс
class Class
{
    public: 
    void Method (int x, int arr[x][x])
};
void Class::Method(int x, int arr[x][x])
    {
           cout<<"Array size: "<< x;
    }
 
int main() {
        Class.Method (5, arr5x5);
              }

Так оно, конечно же, не работает, проблема в том, чтобы задать в качестве параметра метода динамический массив (в 11 строке откровенная ерунда написана), не понимаю как это сделать, прошу вашей помощи.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.11.2013, 10:09     двумерный массив в качестве параметра метода класса
Посмотрите здесь:

Двумерный массив в качестве параметра функции C++
Как передать метод класса в качестве параметра функции C++
C++ [C++, OpenGL, glut] передача метода класса в качестве параметра функции glutDisplayFunc()
C++ Передача метода класса в качестве параметра для метода другого класса
Создание шаблона bool-функции, принимающей в качестве параметра экземпляр класса C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MrCold
851 / 749 / 71
Регистрация: 11.01.2012
Сообщений: 1,942
29.11.2013, 10:44     двумерный массив в качестве параметра метода класса #2
Дело в том, что отправляя массив в функцию ( в метод )
вам также необходимо передавать его размеры
Варианты


Непонятно просто зачем передавать размер а потом
Цитата Сообщение от Stingo Посмотреть сообщение
метод должен определить размерность некоторого переданного ему массива
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,154
Завершенные тесты: 1
29.11.2013, 10:55     двумерный массив в качестве параметра метода класса #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class Class
{
    private:
      int M;// к-во строк
      int N;// к-во столбцов
      int ** arr;
    public: 
      Class(int n,int m)
      {
           N=n;M=m;
           arr=new int*[M];
           for(int i=0;i<M;i++)
                arr[i]=new int[N];
      }
      ~Class()
      {
          for(int i=0;i<M;i++)
             delete[] arr[i];
          delete[] arr;
      }
    void Method (); // ничего передавать не надо. Массив и индексы - члены класса
};
Stingo
1 / 1 / 0
Регистрация: 29.11.2013
Сообщений: 10
29.11.2013, 14:12  [ТС]     двумерный массив в качестве параметра метода класса #4
Цитата Сообщение от MrCold Посмотреть сообщение
Дело в том, что отправляя массив в функцию ( в метод )
вам также необходимо передавать его размеры
Варианты


Непонятно просто зачем передавать размер а потом
Про передавать размер и потом выдавать его - это чушь я написал, да. А ссылочка ваша помогла, спасибо.
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
29.11.2013, 14:19     двумерный массив в качестве параметра метода класса #5
Stingo, размер массива, который создан не через new вроде бы можно определить так:
C++
1
2
int massive[10][10];
int n = sizeof(massive), m = sizeof(massive[0]);
Stingo
1 / 1 / 0
Регистрация: 29.11.2013
Сообщений: 10
29.11.2013, 15:27  [ТС]     двумерный массив в качестве параметра метода класса #6
Цитата Сообщение от nexen Посмотреть сообщение
Stingo, размер массива, который создан не через new вроде бы можно определить так:
C++
1
2
int massive[10][10];
int n = sizeof(massive), m = sizeof(massive[0]);
Не, тут смысл именно чтобы метод мог обрабатывать несколько разных двумерных массивов.
Yandex
Объявления
29.11.2013, 15:27     двумерный массив в качестве параметра метода класса
Ответ Создать тему
Опции темы

Текущее время: 01:29. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru