Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.10.2013, 17:02   #1
Drago56
Пользователь
 
Регистрация: 13.12.2010
Сообщений: 91
По умолчанию Конструктор копирования

Код:
#pragma hdrstop
#pragma argsused
#include<math.h>
#include<time.h>
#include<stdlib.h>
#include<iostream.h>
#include<conio.h>
#include<iomanip.h>
using namespace std;
//==============================================================================
int n=0,I,J;
//==============================================================================
class Matrix
      {
             int **Mas;
             int size;
             public:
                       
             Matrix();
             Matrix(const Matrix& a);
             ~Matrix();
             void Matrix::Show();
             void Matrix::Show2();
             };
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Matrix::Matrix()
{
     int k;
     k=rand()%19+1;
     size=k;
     cout<<"Квадратная матрица размером "<<k<<"x"<<k<<endl;
     cout<<setw(3);
     Mas=new int*[size];
     for(int i=0;i<size;i++) Mas[i]=new int[size];
     
     for(int i=0;i<size;i++)  {
          for(int j=0;j<size;j++)  { 
               Mas[i][j]=rand()%100;
               cout<<Mas[i][j]<<setw(3);
                                }
                                cout<<endl;
                           }  
cout<<endl;             
}
//------------------------------------
Matrix::Matrix(const Matrix& a)
{
  
      
     Mas=new int*[size];
     for(int i=0;i<a.size;i++) Mas[i]=new int [a.size];

     for(int i=0;i<a.size;i++)  {
        for(int j=0;j<a.size;j++)  {              
              Mas[i][j]=a.Mas[i][j];
              }}
}
//-------------------------------------
Matrix::~Matrix()
{
delete []Mas;
}
//-------------------------------------
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

void Matrix::Show()
{
cout<<Mas[0][0];
}

void Matrix::Show2()
{
cout<<&Mas[0][0];
} 
             
main()
{    
system("cls");
     srand(time(NULL));
     n=rand()%9+1;
     Matrix *MATRIX;    
     cout<<"Количество матриц :"<<n<<endl<<endl;
     MATRIX=new Matrix[n];

     Matrix *MATRIX_2=MATRIX;

//проверка выделяеться новая память или нет
MATRIX->Show();
MATRIX->Show2();
cout<<endl;
MATRIX_2->Show();
MATRIX_2->Show2();

cout<<endl;
delete []MATRIX;     
system("pause");      
}
Не пашет конструктор копирования,подскажите как исправить его
Тут создается объекты квадратной матрицы
У меня в программе новый объект использует ссылку на первый объект матрицы,а должен копировать значение первой матрицы

Последний раз редактировалось Drago56; 12.10.2013 в 17:04.
Drago56 вне форума Ответить с цитированием
Старый 12.10.2013, 17:48   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
 Matrix *MATRIX_2= new Matrix(MATRIX);
не?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.10.2013, 18:00   #3
Drago56
Пользователь
 
Регистрация: 13.12.2010
Сообщений: 91
По умолчанию

85 F:\ООП\OOP\Лаба 2\Untitled1.cpp no matching function for call to `Matrix::Matrix(Matrix*&)'
note F:\ООП\OOP\Лаба 2\Untitled1.cpp:47 candidates are: Matrix::Matrix(const Matrix&)
Drago56 вне форума Ответить с цитированием
Старый 12.10.2013, 22:12   #4
Igor95
Форумчанин
 
Регистрация: 03.01.2013
Сообщений: 388
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Код:
 Matrix *MATRIX_2= new Matrix(MATRIX);
не?
Здесь, MATRIX - идентификатор указателя.
Нужно: Matrix *MATRIX_2= new Matrix(*MATRIX)
Igor95 вне форума Ответить с цитированием
Старый 12.10.2013, 23:32   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Нужно:
Не буду спорить, я не сишник.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 13.10.2013, 09:27   #6
Igor95
Форумчанин
 
Регистрация: 03.01.2013
Сообщений: 388
По умолчанию

Ну, да, это не Java или C# :-) :-)
Тут еще указатели есть :-) :-)
Igor95 вне форума Ответить с цитированием
Старый 13.10.2013, 10:54   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Тут еще указатели есть :-) :-)
Пусть будут. Разрешаю :-)
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
конструктор копирования revaldo666 Общие вопросы C/C++ 10 21.06.2011 22:42
Конструктор копирования DartDayring Общие вопросы C/C++ 4 16.11.2010 17:46
Конструктор копирования Lotles Общие вопросы C/C++ 1 31.10.2010 17:01
Конструктор копирования. 123er4 Общие вопросы C/C++ 4 13.06.2010 01:27
Конструктор копирования Djaconda Общие вопросы C/C++ 3 11.06.2008 18:54