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

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

Войти
Регистрация
Восстановить пароль
 
Андрей2011
29 / 23 / 2
Регистрация: 18.01.2011
Сообщений: 359
#1

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

19.06.2012, 17:16. Просмотров 372. Ответов 2
Метки нет (Все метки)

Вопрос следующий.
У меня есть класс "Точки" есть класс "группы" и есть класс "возможные группы".
3 класса.
в классе "группы" есть массив который хранит в себе ОБЪЕКТЫ точек.
так же хотелось бы чтобы класс "возм. гр" хранил в себе объекты "группы" но реализовать не получается.
Видимо проблема в конструкторе копирования.
Вот классы:
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
class TTo4ka
{
public:
    TTo4ka() { };
 
    short FX,FY;
};
 
class TGrup
{
 
public:
 
    TGrup() { };
 
    std::vector<TTo4ka> MassivTo4ek;
    short GetKolT() {return MassivTo4ek.size(); }
    void ClearMassivTo4ek() { MassivTo4ek.clear(); }
    void AddToMassivTo4ek(TTo4ka &T)
    { MassivTo4ek.push_back(T);  }
};
 
class TVozmGrup
{
public:
        TVozmGrup() { };
 
    std::vector<TGrup> MassivGrup;
    short GetKolGrup() {return MassivGrup.size(); }
    void ClearMassivGrup() { MassivGrup.clear(); }
    void AddToMassivGrup(TGrup Grup) { MassivGrup.push_back(Grup);};
};
Они простые. в последнем есть массив для накопления групп,
в среднем - массив для накопления точек.

Когда я хочу заполнить возм гр:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
  TGrup  *Gr =new TGrup[3];
  Gr[0].FGrup=1;
  Gr[1].FGrup=2;
  Gr[2].FGrup=3;
 
  TTo4ka T;
  T.FX=56;  T.FY=55;
 
 
 
  Gr[0].AddToMassivTo4ek(T);
 
  p_VozmGrup[0].AddToMassivGrup(Gr[0]);
то вылетает ошибка указывающая на адрес. т.е. ошибка памяти.
Как можно доработать программу?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.06.2012, 17:16     Касательно конструктора копирования
Посмотрите здесь:

Не понятна работа конструктора копирования - C++
Добрый день! Читаю Шилдта базовый курс. Дошел до конструктора копии.В книжных примерах вроде все понятно было. Перешел на перегрузку...

По поводу ссылок и конструктора копирования - C++
Никак не пойму. При создании объекта и передачи конструктору в качестве параметра объекта другого класса, отладчик показывает что на...

Ошибка в перегрузке конструктора копирования - C++
// strimem.cpp // Класс String с экономией памяти // Перегружаемая операция присваивания и конструктор // копирования #include...

Пример конструктора копирования не понятен - C++
Задание: есть класс, одним из пунктом является написание класса копирования. Есть такой код Phone::Phone(Phone *a){ ...

Неявный вызов конструктора копирования - C++
Здравствуйте, как можно неявно вызвать конструктор копирования 3 способами? Я только 1 найти смог. #include &lt;iostream&gt; class...

Грамотное использование конструктора копирования - C++
Всем добрый вечер. Есть класс list(двухсвязный). Задача гласит: Сгенерировать некоторую последовательность чисел, вывести на экран, и затем...

Реализация конструктора копирования для класса - C++
P.S плохо с русским Этот конструктор копирования сломал мне мозг И вот что я понемаю когда мы делаем так foo objCopy(obj); ...

Перегрузка конструктора копирования и оператора присвоения - C++
Всем привет, сразу к делу. После прочтения 11 главы Лафоре столкнулся с такой бедой как понятие перегрузка оператора присвоения. Дело в том...

Вызов конструктора копирования, сохранение данных - C++
Хочу чтобы при повторном обращении к уже использовавшемуся счету прошлые изменения сохранялись Основной код : int...

Все случаи использования конструктора копирования - C++
приведите пример демонстрирующий необходимость и все случаи использование конструктора копирования. нужна помощь)))) #include &lt;iostream&gt; ...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Andrey.K
342 / 263 / 15
Регистрация: 14.11.2010
Сообщений: 482
19.06.2012, 17:50     Касательно конструктора копирования #2
Это вообще что такое?
C++
1
2
3
  Gr[0].FGrup=1;
  Gr[1].FGrup=2;
  Gr[2].FGrup=3;
Что ты тут пытаешься сделать? FGroup вообще такого нет, даже если и передлать на TGroup ,то это даже не будет конструктором.

Дело не в констукторе копирования.
Вот держи:
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
#include <iostream>
#include <conio.h>
#include <vector>
using namespace std;
class TTo4ka
{
public:
    TTo4ka():FX(0),FY(0) { }
    short FX,FY;
};
 
class TGrup
{
public:
    TGrup() { }
 
    vector<TTo4ka> MassivTo4ek;
    short GetKolT() {return MassivTo4ek.size(); }
    void ClearMassivTo4ek() { MassivTo4ek.clear(); }
    void AddToMassivTo4ek(TTo4ka &T) { MassivTo4ek.push_back(T);  }
};
 
class TVozmGrup
{
public:
    TVozmGrup() { }
 
    vector<TGrup> MassivGrup;
    short GetKolGrup() {return MassivGrup.size(); }
    void ClearMassivGrup() { MassivGrup.clear(); }
    void AddToMassivGrup(TGrup Grup) { MassivGrup.push_back(Grup);};
};
int main ()
{
    setlocale (LC_ALL, "Russian");
    TTo4ka T;// объект точка
    T.FX=56;  T.FY=55;// присвоили значения полям объекта
    TGrup  *Gr =new TGrup[3]; // массив объектов типа TGroup
    Gr[0].AddToMassivTo4ek(T);// добавляем в группу Gr[0] наш объект(точка) T
    TVozmGrup* p_VozmGrup=new TVozmGrup[3];// создали массив объектов из TvozmGrup у тебя его не было!!!!!!!!!
    p_VozmGrup[0].AddToMassivGrup(Gr[0]);// а теперь спокойно добавляем.
    getch();
}
Андрей2011
29 / 23 / 2
Регистрация: 18.01.2011
Сообщений: 359
19.06.2012, 18:10  [ТС]     Касательно конструктора копирования #3
Да, так работает. Спасибо!!
Ответ Создать тему
Опции темы

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