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

Конструктор копирования - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
xbifx
0 / 0 / 0
Регистрация: 14.01.2012
Сообщений: 37
14.01.2012, 02:45     Конструктор копирования #1
Помогите пожалуйста разобраться, необходимо добавить конструктор копирования, теорию знаю, а как на практике применить не знаю.
Программа вот - http://zalil.ru/32492444.

Добавлено через 33 минуты
вот нужный отрывок

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
36
37
38
39
40
41
42
43
44
45
46
class List 
{
     struct Elem 
     {
        int x;
        int y;
        int v;
        Elem *next;
      }; 
      
private:
   
   Elem *head, *end;
   int Find(int i, int j);
 
public:
   List();
   ~List();
   void Add(int i, int j, int value);
   void Remove(int i, int j);
   int Get(int i, int j);
   void Clear();
};
 
class Matr 
{
private:
       List *CL;
 
public:
       Matr()
       {
            N = 10;
            M = 10;
            CL = new List;
       }
       Matr(int _N, int _M)
       {
            N = _N;
            M = _M;
            CL = new List;
       }
       ~Matr()
       {
            delete CL;
       }
 Комментарий модератора 
Используйте теги форматирования кода!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.01.2012, 02:45     Конструктор копирования
Посмотрите здесь:

C++ Конструктор копирования.
C++ Конструктор копирования
C++ Конструктор копирования
Конструктор копирования C++
Конструктор копирования C++
C++ Конструктор копирования
C++ Конструктор копирования
Конструктор копирования C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
lemegeton
 Аватар для lemegeton
2909 / 1338 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
14.01.2012, 02:49     Конструктор копирования #2
Я несколько обескуражен. Похоже, в коде матрица на базе односвязного списка.

Пример коструктора копирования
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
#include <cstring>
#include <iostream>
 
class String {
 public:
  String(const char *string)
    : string_(strcpy(new char[strlen(string) + 1], string)) {}
  // copy constructor
  String(const String &string)
    : string_(strcpy(new char[string.size() + 1], string.cstr())) {}
  virtual ~String() {
    delete [] string_;
  }
  String &operator=(const String &other) {
    if (this != &other) {
      delete [] string_;
      string_ = strcpy(new char[other.size() + 1], other.cstr());
    }
    return *this;
  }
  const char *cstr() const { return string_; }
  size_t size() const { return strlen(string_); }
 private:
  char *string_;
};
 
int main(int argc, char *argv[]) {
  String a = "This is a string.";
  String b(a); // copy constructor
  a = "This is another string.";
  std::cout << "a: " << a.cstr() << std::endl;
  std::cout << "b: " << b.cstr() << std::endl;
}
xbifx
0 / 0 / 0
Регистрация: 14.01.2012
Сообщений: 37
14.01.2012, 09:56  [ТС]     Конструктор копирования #3
Да, верно, разряженная матрица, односвязный список.
Просто если по идее применять КК к классу Matr, то есть матрицы, должно осуществляться копирование матрицы так? Просто на этом примере все просто, а вот как матрицу скопировать не понимаю..

Добавлено через 59 минут
C++
1
2
3
4
5
6
7
8
9
10
Matr::Matr(Matr const &nw)
{
    int one=0;
    for(int i = 0; i < N;i++)
        for(int j = 0; j < M;j++)
        {
               one=nw.Get(i,j);
               Add(i, j, one);
        }
}
написал вот такой конструктор, только он почему то отказывается копировать..
вызываю с помощью Matr A(MM); A - новая матрица, MM - имеющаяся.

Добавлено через 5 часов 58 минут
помогите пожалуйста, срочно надо
Yandex
Объявления
14.01.2012, 09:56     Конструктор копирования
Ответ Создать тему
Опции темы

Текущее время: 01:49. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru