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

Вопрос по классам - C++

Восстановить пароль Регистрация
 
velodro
72 / 1 / 1
Регистрация: 28.11.2009
Сообщений: 78
05.12.2009, 14:09     Вопрос по классам #1
создал конструктор, который создаёт элемент класса - массив, а вот инициализация данного массива с помощью нового конструктора не удаётся...
подскажите пожалуйста - как инициализировать-то

вот создание массива:

C++
1
2
3
4
5
6
7
class Test {
public:
    int *massive;
    Test(int size) {
        massive=new int[size];
    }
};
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.12.2009, 14:09     Вопрос по классам
Посмотрите здесь:

C++ Вопрос по классам
книга по классам C++
C++ Вопрос по классам
C++ Вопрос по классам и функциям
Вопрос по Классам... C++
C++ Задача по классам.с++
C++ Вопрос по классам
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Sekt
 Аватар для Sekt
156 / 155 / 10
Регистрация: 29.04.2009
Сообщений: 637
05.12.2009, 15:25     Вопрос по классам #2
Добавте цикл-внутрь
Gravity
 Аватар для Gravity
556 / 550 / 39
Регистрация: 29.01.2009
Сообщений: 1,274
05.12.2009, 16:08     Вопрос по классам #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Test {
    private:
        int *a;
        int size;
    public:
        Test(int n)
        {
            size = n;
            a = new int[size];
            // инициализация нулем
            for(int i = 0; i < size; i++)
                a[i] = 0;
        }
};
velodro
72 / 1 / 1
Регистрация: 28.11.2009
Сообщений: 78
05.12.2009, 19:47  [ТС]     Вопрос по классам #4
а если двухмерный массив?
Rififi
 Аватар для Rififi
2332 / 1047 / 43
Регистрация: 03.05.2009
Сообщений: 2,656
05.12.2009, 19:53     Вопрос по классам #5
velodro,

создал конструктор, который создаёт элемент класса - массив, а вот инициализация данного массива с помощью нового конструктора не удаётся...

massive = new int [size] ();

а если двухмерный массив?

хоть десятимерный.
velodro
72 / 1 / 1
Регистрация: 28.11.2009
Сообщений: 78
05.12.2009, 20:16  [ТС]     Вопрос по классам #6
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class Test {
    private:
        int **a;
        int size1;
        int size2;
    public:
        Test(int n)
        {
            size1 = n;
            size2 = n;
            *a = new int[size1];
            for (int i=0; i<size1; i++) a[i]=new int[size2]
            // инициализация нулем
            for(int i = 0; i < size1; i++)
                for(int j = 0; j < size2; j++)
                    a[i][j] = 0;
        }
};
не пашет....
Rififi
 Аватар для Rififi
2332 / 1047 / 43
Регистрация: 03.05.2009
Сообщений: 2,656
05.12.2009, 20:22     Вопрос по классам #7
velodro,

не пашет....
потому что неправильно инициализируешь. я наблюдаю вопиющую безграмотность при работе с двойным указателем

надо бы тебе книжку почитать... (((Ж

для начала нужно так:
a = new int* [size1];
Vladimir.
155 / 155 / 10
Регистрация: 24.11.2009
Сообщений: 375
05.12.2009, 20:22     Вопрос по классам #8
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
class SquareMatrix
{
      private:
              double** matrix;
              int dimm;
              void Create()
              {
                   matrix = new double* [dimm];
                   for (int i=0; i<dimm; i++)
                       matrix[i]= new double [dimm];
              }
      public:
             SquareMatrix(int n): dimm(n) {Create();}
             ~SquareMatrix()
             {
                   for (int i=0; i<dimm; i++)
                       delete[] matrix[i];
                   delete[] matrix;
             }
             
             double &E(int i, int j) 
             {
                 return matrix[i][j]; // E(lement)
             }
                
};
пример обращения (заполнение рандомными числами..):
C++
1
2
3
4
5
6
7
8
int main()
{
    int dimm = 10; 
    SquareMatrix M(dimm); 
    for (int i=0; i<dimm;i++)
        for (int j=0;j<dimm;j++)
            M.E(i,j) = rand()%100;
}
velodro
72 / 1 / 1
Регистрация: 28.11.2009
Сообщений: 78
05.12.2009, 21:01  [ТС]     Вопрос по классам #9
спасибо большое всем участникам обсуждения!

Добавлено через 23 минуты
скажите, а создать аналогичный массив КАК ЭЛЕМЕНТ КЛАССА можно через конструктор копирования или конструктор копирования копирует только объекты класса?
Vladimir.
155 / 155 / 10
Регистрация: 24.11.2009
Сообщений: 375
05.12.2009, 21:55     Вопрос по классам #10
Цитата Сообщение от velodro Посмотреть сообщение
скажите, а создать аналогичный массив КАК ЭЛЕМЕНТ КЛАССА можно через конструктор копирования или конструктор копирования копирует только объекты класса?
Я к вечеру думаю медленно, возможно поэтому не понимаю: чего именно Вы хотите получить?
Если вам нужен новый класс, который будет иметь "элементом класса" массив, то вам нужно наследовать от существующего класса.

Если вы хотите получить объект аналогичный уже существующему объекту, то вам нужен конструктор копирования..
velodro
72 / 1 / 1
Регистрация: 28.11.2009
Сообщений: 78
05.12.2009, 22:04  [ТС]     Вопрос по классам #11
нужно чтобы в том же классе была матрица с такой же размерностью но с другими элементами...
реально ли это?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.12.2009, 22:21     Вопрос по классам
Еще ссылки по теме:

C++ У меня вопрос по классам. На приложенных картинках я выделил непонятные строки.
C++ Литература по классам
C++ от структур к классам
Программа по классам C++
C++ Программа по классам

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

Или воспользуйтесь поиском по форуму:
Vladimir.
155 / 155 / 10
Регистрация: 24.11.2009
Сообщений: 375
05.12.2009, 22:21     Вопрос по классам #12
да, конечно. Вы же можете объявить две переменных типа char, главное, чтоб имена не совпадали, точно так же и для массивов.
будет что-то вроде:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class Test {
    private:
        int *a;
        int *b;
        int size;
    public:
        Test(int n)
        {
            size = n;
            a = new int[size];
            // инициализация нулем
            for(int i = 0; i < size; i++)a[i] = 0;
                
            b = new int[size];
            for(int i = 0; i < size; i++) b[i] = 0;
                
        }
};
PS: если в вашем классе два массива хранят идентичные матрицы, логично сделать класс описывающий такие матрицы...
Yandex
Объявления
05.12.2009, 22:21     Вопрос по классам
Ответ Создать тему
Опции темы

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