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

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

Восстановить пароль Регистрация
 
Андрей2011
29 / 23 / 2
Регистрация: 18.01.2011
Сообщений: 359
19.06.2012, 17:16     Касательно конструктора копирования #1
Вопрос следующий.
У меня есть класс "Точки" есть класс "группы" и есть класс "возможные группы".
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     Касательно конструктора копирования
Посмотрите здесь:

Вызов конструктора для this в констукторе копирования C++
C++ По поводу ссылок и конструктора копирования
C++ Ошибка в перегрузке конструктора копирования
C++ Подскажите реализацию конструктора копирования
C++ Неявный вызов конструктора копирования
Не понятна работа конструктора копирования C++
C++ Пример конструктора копирования не понятен

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Andrey.K
 Аватар для Andrey.K
338 / 259 / 15
Регистрация: 14.11.2010
Сообщений: 480
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
Да, так работает. Спасибо!!
Yandex
Объявления
19.06.2012, 18:10     Касательно конструктора копирования
Ответ Создать тему
Опции темы

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