Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
velodro
72 / 1 / 3
Регистрация: 28.11.2009
Сообщений: 78
1

Вопрос по классам

05.12.2009, 14:09. Просмотров 753. Ответов 11
Метки нет (Все метки)

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

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

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

Вопрос по Классам...
#include <iostream> using std::cout; using std::endl; class GradeBook {...

Вопрос по классам
Вообщем есть два класса, TTriangular и TPoint. В TTriangular есть метод,...

Вопрос по классам
Опишу определение базавого класса и производного class Date { private: ...

Вопрос по классам
Есть такой код #include <iostream> class C1{ public: C1(){std::cout...

Вопрос по классам и функциям
Здравствуйте, вообщем мне надо реализовать примерно такое дело: имеется класс...

11
Sekt
157 / 156 / 47
Регистрация: 29.04.2009
Сообщений: 637
05.12.2009, 15:25 2
Добавте цикл-внутрь
0
Gravity
569 / 563 / 64
Регистрация: 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;
        }
};
0
velodro
72 / 1 / 3
Регистрация: 28.11.2009
Сообщений: 78
05.12.2009, 19:47  [ТС] 4
а если двухмерный массив?
0
Rififi
2363 / 1056 / 104
Регистрация: 03.05.2009
Сообщений: 2,656
05.12.2009, 19:53 5
velodro,

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

massive = new int [size] ();

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

хоть десятимерный.
0
velodro
72 / 1 / 3
Регистрация: 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;
        }
};
не пашет....
0
Rififi
2363 / 1056 / 104
Регистрация: 03.05.2009
Сообщений: 2,656
05.12.2009, 20:22 7
velodro,

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

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

для начала нужно так:
a = new int* [size1];
1
Vladimir.
159 / 159 / 48
Регистрация: 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;
}
1
velodro
72 / 1 / 3
Регистрация: 28.11.2009
Сообщений: 78
05.12.2009, 21:01  [ТС] 9
спасибо большое всем участникам обсуждения!

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

Если вы хотите получить объект аналогичный уже существующему объекту, то вам нужен конструктор копирования..
0
velodro
72 / 1 / 3
Регистрация: 28.11.2009
Сообщений: 78
05.12.2009, 22:04  [ТС] 11
нужно чтобы в том же классе была матрица с такой же размерностью но с другими элементами...
реально ли это?
0
Vladimir.
159 / 159 / 48
Регистрация: 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: если в вашем классе два массива хранят идентичные матрицы, логично сделать класс описывающий такие матрицы...
1
05.12.2009, 22:21
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.12.2009, 22:21

У меня вопрос по классам. На приложенных картинках я выделил непонятные строки.
У меня вопрос по классам. На приложенных картинках я выделил непонятные строки....

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

Программа по классам
Нужна помощь по классам, помогите с написание кода Описать класс, реализующий...


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

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

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