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

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

Войти
Регистрация
Восстановить пароль
 
velodro
72 / 1 / 1
Регистрация: 28.11.2009
Сообщений: 78
#1

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

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

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

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

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++
Есть такой код #include <iostream> class C1{ public: C1(){std::cout <<" 1 is open"<<std::endl;}; ~C1(){std::cout <<" 1...

Вопрос по классам - C++
Вообщем есть два класса, TTriangular и TPoint. В TTriangular есть метод, который должен вводить координаты заданной точки. В TPoint...

Вопрос по Классам... - C++
#include <iostream> using std::cout; using std::endl; class GradeBook { public: void displayMessage()

Вопрос по классам - C++
Опишу определение базавого класса и производного class Date { private: ... public: Date( ){}; ...

Вопрос по классам и функциям - C++
Здравствуйте, вообщем мне надо реализовать примерно такое дело: имеется класс the_class нужно чтобы у каждого экземпляра была...

У меня вопрос по классам. На приложенных картинках я выделил непонятные строки. - C++
У меня вопрос по классам. На приложенных картинках я выделил непонятные строки. Строка 9. Переменная int age объявляется в строке 9?...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Sekt
156 / 155 / 10
Регистрация: 29.04.2009
Сообщений: 637
05.12.2009, 15:25 #2
Добавте цикл-внутрь
Gravity
562 / 556 / 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
2359 / 1054 / 44
Регистрация: 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
2359 / 1054 / 44
Регистрация: 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
нужно чтобы в том же классе была матрица с такой же размерностью но с другими элементами...
реально ли это?
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: если в вашем классе два массива хранят идентичные матрицы, логично сделать класс описывающий такие матрицы...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.12.2009, 22:21
Привет! Вот еще темы с ответами:

Литература по классам - C++
Посоветуйте какую-то книгу где хорошо описано объявления, как работать с классами и все о классах!

Программа по классам - C++
Нужна помощь по классам, помогите с написание кода Описать класс, реализующий стек и работу с ним. 1.) Класс должен содержать следующие...

учебник по классам - C++
Люди, подскажите, пожалуйста, где можно найти хороший учебник по классам с примерами задач

лабораторная по классам - C++
Доброго вечера ув. гуру. Очень прошу вас помочь написать небольшую программу, связанной с великим ООП, а конкретнее работой с классами....


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
05.12.2009, 22:21
Ответ Создать тему
Опции темы

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