Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
defex04
0 / 0 / 0
Регистрация: 31.10.2013
Сообщений: 13
#1

Конструктор копирование у наследника - C++

18.12.2013, 22:12. Просмотров 925. Ответов 3
Метки нет (Все метки)

Основной класс
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
class matrix
{
public:
    int N,M; // N - количество строк, M - количество столбцов матрицы
    int **pa; 
 
    
 
    matrix(int n,int m);
    ~matrix();
    matrix (const matrix &copy);
    
};
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
//Конструктор матрицы (Выделение динамической памяти)
matrix::matrix(int n,int m)
{
    pa=new int*[n];
    for (int i=0;i<n;i++)
        pa[i]=new int[m];
    N=n; //Количество строк в двумерном массиве
    M=m; //Количество столбцов в двумерном массиве
}
 
// Конструктор создания копии
matrix::matrix(const matrix &copy)
{
    this-> N = copy.N;
    this-> M = copy.M;
    this -> pa = new int *[this ->N];
    for (int i=0;i<this->N;i++)
        this -> pa[i] = new int [this->M];
    for (int i=0;i<this->N;i++)
        for (int j=0;j<this->M;j++)
            this->pa[i][j]=copy.pa[i][j];
 
}
 
//Деструктор двумерного массива (Удаление)
matrix::~matrix()
{
    if (this->pa)
    {
        for (int i=0;i<N;i++)
            delete[] pa[i];
        delete[] pa;
        cout<<"Программа закончила работу, результат программы занесен в файл вывода"<<endl;
    }
}
Класс-наследник

C++
1
2
3
4
5
6
7
8
9
class FindExer: public matrix
{
    
public:
    int **result;
    FindExer(int n,int m):matrix(n,m) {};
    FindExer(const matrix &copy):matrix(copy){//////////////};
    // destr
};
Не получается создать конструктор и деструктор копирования для int **result.
Помогите пожалуйста

Добавлено через 1 час 34 минуты


Добавлено через 2 часа 12 минут
Может кто помочь? Завтра сдавать работу...

Добавлено через 44 минуты
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.12.2013, 22:12
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Конструктор копирование у наследника (C++):

Конструктор класса наследника - C++
Я не могу понять свою ошибку к примеру если пишу так все нормально class one { public: one(); };

Не работает конструктор наследника класса - C++
Есть класс: template &lt;class T&gt; class HashTable { HashTable(int _size) { size = _size; for (int i = 0; i &lt;...

Сравнение класса наследника через конструктор с одним аргументом - C++
#include &lt;iostream&gt; using namespace std; //////////////////////////////// class Counter { protected: unsigned int count; ...

Конструктор копирование - C++
Получил задание от преподавателя написать программу «Поезд» Условия такие программа предлагает ввести с клавиатуры: -Количество...

Конструктор-копирование шаблона класса - C++
Объясните пожалуйста, что я делаю не так.

Зачем возвращать конструктор копирование? - C++
Добрый день. Первый вопрос в заголовке темы. Второй - где это можно применить. Спасибо. #include &lt;iostream&gt; class MyBase { ...

3
korlend
5 / 5 / 0
Регистрация: 17.12.2013
Сообщений: 10
19.12.2013, 00:03 #2
меня немного смущает int **result; в паблике
в чем собственно проблема? я полагаю в конструкторе FindExer будет следующее
C++
1
2
3
4
5
6
FindExer(int n,int m):matrix(n,m) 
{
    result=new int*[n];
    for (int i=0;i<n;i++)
        result[i]=new int[m];
};
и соответственно конструктор копирования, то есть тебе нужно просто скопировать функцию копирования из класса предка, потому-что там точно такой же двумерный массив целых чисел, просто заменив pa на result и естественно убрав копирование элементов N и M
0
defex04
0 / 0 / 0
Регистрация: 31.10.2013
Сообщений: 13
19.12.2013, 00:28  [ТС] #3
Спасибо большое
0
Buckstabue
175 / 124 / 6
Регистрация: 12.01.2012
Сообщений: 624
19.12.2013, 00:37 #4
Мягко говоря, не совсем понял что вам требуется сделать с int **result
Могу предположить, что вы там хотите видеть матрицу, которая была создана в родительском классе. В таком случае могу вам предложить ввести в класс матрицы метод наподобие этого
C++
1
2
3
4
5
protected:
    int** getRawMatrix()
    {
         return pa;
    }
Соответственно вы можете вызывать данный метод в унаследовавших данный класс функциях
1
19.12.2013, 00:37
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.12.2013, 00:37
Привет! Вот еще темы с ответами:

Будет ли работать должным образом конструктор копирование с указателем? - C++
class A { A() {} A(const A *); } То что этот код скомпилируется - сомнений нет. Вот есть сомнения по поводу его...

Не могу сделать чтобы класс содержал основной конструктор и конструктор копирования - C++
Разработать класс ThreeAngle для работы с плоскими треугольниками. В качестве членов-данных задаются длины трех сторон треугольника. Класс...

this(Всегда ли вызывается конструктор при не явной передачи объекта в конструктор) - C++
class Test { int i; public: void test(int i) { this -&gt; i = i; } }; Конструктор Test::Test всегда вызывается...

Будет ли определен компилятором конструктор по умолчанию, если есть конструктор с дефолтным параметром? - C++
Добрый день, сразу к делу, есть некий класс class some { int x; public: some(int y = 1) : x(y) {} };


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

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

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