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

Указатель на двухмерный массив обьектов - C++

Восстановить пароль Регистрация
 
VIPerZ
7 / 7 / 0
Регистрация: 26.02.2011
Сообщений: 69
13.08.2013, 09:27     Указатель на двухмерный массив обьектов #1
Допустим есть класс:
C++
1
2
3
4
5
class a_type {
int a,b;
public:
a_type(int x, int y) { a = x; b = y}
};
Дальше в коде мне нужно создать указатель на двухмерный массив таких обьектов и выделить под него память с начальной инициализацией через конструктор...
Пробовал разные варианты, но ничего не работает... Та конструкция, которая работает для не указателя - не прокатила
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11800 / 6779 / 765
Регистрация: 27.09.2012
Сообщений: 16,829
Записей в блоге: 2
Завершенные тесты: 1
13.08.2013, 09:35     Указатель на двухмерный массив обьектов #2
Цитата Сообщение от VIPerZ Посмотреть сообщение
Пробовал разные варианты, но ничего не работает...
Нужен конструктор без параметров
BigLow
55 / 55 / 2
Регистрация: 07.07.2013
Сообщений: 345
13.08.2013, 10:30     Указатель на двухмерный массив обьектов #3
конструктор по умолчанию
C++
1
a_type(int x=0, int y=0) { a = x; b = y}
Tulosba
:)
Эксперт C++
4377 / 3220 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
13.08.2013, 11:21     Указатель на двухмерный массив обьектов #4
C++
1
explicit a_type(int x=0, int y=0): a(x), b(y) {}
Forveg
7 / 7 / 1
Регистрация: 14.08.2013
Сообщений: 20
14.08.2013, 18:00     Указатель на двухмерный массив обьектов #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include<iostream>
 
class a_type {
    int a,b;
public:
a_type(int x=5, int y=6) { a = x; b = y; }
friend void print(a_type& obj) { std::cout<<"["<<obj.a<<";"<<obj.b<<"] "; }
};
 
void print_matrix(a_type** p,int incols,int inrows)
{
    int i,j;
    for(i=0;i<inrows;i++)
    { 
        std::cout<<std::endl;
        for(j=0;j<incols;j++)
            print(p[i][j]);
    }
}
 
int main()
{
int cols,rows,i,j,tmpa,tmpb;
std::cout<<"\nrows: ";    std::cin>>rows; // число рядов
std::cout<<"\ncolumns: "; std::cin>>cols; // число столбцов
a_type** a_matrix= new a_type*[rows];     // берем в куче память для массива  
                                          // указателей на a_type
for(i=0;i<rows;i++)
{   
    a_matrix[i]=new a_type[cols]; // берем в куче память для очередного массива (i-го ряда матрицы) 
                                        // его элементы инициализируются через конструктор значениями по умолчанию
    //for(j=0;j<cols;j++)         // закомментирован цикл ручного задания значений          
    //{
    //  std::cout<<"\n["<<i<<";"<<j<<"] :"; std::cin>>tmpa>>tmpb;  
    //  a_matrix[i][j] = a_type(tmpa,tmpb); // вносим объект 
    //}
}
print_matrix(a_matrix,cols,rows);
 
for(i=0;i<rows;i++)
delete[] a_matrix[i]; // освобождаем память, занятую массивом (i-ым рядом матрицы) 
 
delete[] a_matrix; // освобождаем память, занятую массивом указателей
 
std::cout<<std::endl;
system("pause");
return 0;
}
Yandex
Объявления
14.08.2013, 18:00     Указатель на двухмерный массив обьектов
Ответ Создать тему
Опции темы

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