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

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

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

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

18.12.2013, 22:12. Просмотров 841. Ответов 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 минуты
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.12.2013, 22:12     Конструктор копирование у наследника
Посмотрите здесь:

Конструктор класса наследника - 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 { ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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
defex04
0 / 0 / 0
Регистрация: 31.10.2013
Сообщений: 13
19.12.2013, 00:28  [ТС]     Конструктор копирование у наследника #3
Спасибо большое
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.12.2013, 00:37     Конструктор копирование у наследника
Еще ссылки по теме:

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

Метод наследника? - C++
Я не очень силен в наследовании в С++... Пусть у меня есть класс наследника и есть метод такой же как и у родителя... Как мне сначала...

Вызов метода наследника - C++
Доброго времени суток. Имеется 2 класса: class Text{ public: Text* txt; int n; Text(); void Add(Text A); void...

Вывод из класса наследника - C++
У меня получается вывод из главного класса, а когда вывожу через функцию из класса наследника выдает ошибку, из-за чего так???? хоты вывожу...

Объявление наследника шаблонного класса - C++
как объявить наследника шаблонного класса, да ещё если он обрамлён собственным пространсвом имён? Вот мой класс: namespace my_complex { ...

Ошибка конструктора в классе наследника - C++
Помогите пожалуйста, выдаёт следующую ошибку в классе наследнике #include &quot;stdafx.h&quot; #include &lt;iostream&gt; using namespace std; ...


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

Или воспользуйтесь поиском по форуму:
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;
    }
Соответственно вы можете вызывать данный метод в унаследовавших данный класс функциях
Yandex
Объявления
19.12.2013, 00:37     Конструктор копирование у наследника
Ответ Создать тему
Опции темы

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