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

Перегрузка операторов - C++

Восстановить пароль Регистрация
 
лилиэн
6 / 6 / 0
Регистрация: 22.11.2012
Сообщений: 95
29.10.2013, 20:12     Перегрузка операторов #1
Вот задание
Кликните здесь для просмотра всего текста
b) Создать класс Set – множество целых чисел, используя динамическую память. Определить операторы работы с множествами: "+" – объединение, "*" – пересечение, "-" вычитание, как дружественные функции, а "+=" – включение нового элемента в множество, "==" – сравнения на равенство, и др. как методы класса. Определить операторы "<<" и ">>". Также определить функцию определения принадлежности элемента множеству.

вот мой класс Set
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
class Set
{
      int *set;//указатель на множество
      int tmp_quentity;//текущая размерность
      public:
      Set(int);
      ~Set();
      int Get_element(int pos);
      int Get_quentity();
      void Set_element(int num,int pos);
      void operator+=(int num);
};

на всякий случай конструктор(делаю я через *** но по другому не пришло в голову как сделать)
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
Set::Set(int n):tmp_quentity(n)
{
    set=new int[100]; 
    for(int i=0;i<tmp_quentity;i++)
    set[i]=0;        
}

тоесть я выделяю память сразу на 100 элементов но храню в tmp_quentity сколько из них занято
вот собственно проблема с перегрузкой +=
вот и она
C++
1
2
3
4
5
void Set::operator+=(int num)
{
     tmp_quentity++;
     set[tmp_quentity]=num;
}
то есть если я прибавляю элемент к множетву я увеличиваю размер множества и на "новое" мето ставлю элемент;
но вот незадача я в мэйне пишу S1+=76;
но выводя множество я получаю в конце не 76 а случайный мусор из памяти.почему?
п.с есть варианты более красивой реализации множества? мне самой не нравится то что я выделяю заведомо 100 элементов.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.10.2013, 20:12     Перегрузка операторов
Посмотрите здесь:

C++ [c++] Перегрузка операторов
[C++] Перегрузка операторов C++
C++ Перегрузка операторов
перегрузка операторов C++
C++ перегрузка операторов
Перегрузка операторов C++
Перегрузка операторов C++
C++ Перегрузка операторов (--, +=, -=, == )

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
scenotaph
120 / 120 / 15
Регистрация: 29.03.2013
Сообщений: 237
29.10.2013, 20:26     Перегрузка операторов #2
C++
1
2
3
4
5
void Set::operator+=(int num)
{
     tmp_quentity++;
     set[tmp_quentity-1]=num;
}
лилиэн
6 / 6 / 0
Регистрация: 22.11.2012
Сообщений: 95
04.11.2013, 08:48  [ТС]     Перегрузка операторов #3
Цитата Сообщение от scenotaph Посмотреть сообщение
C++
1
2
3
4
5
void Set::operator+=(int num)
{
     tmp_quentity++;
     set[tmp_quentity-1]=num;
}
ешкин кот,хотела спросить почему, но пока начала писать поняла и стало стыдновато)индексация же с 0 начинается

Добавлено через 1 минуту
Спасибо) а то пишешь пишешь,и как наделаешь таких глупых ошибок и втыкакшь пару часов не понимая откуда они)
Yandex
Объявления
04.11.2013, 08:48     Перегрузка операторов
Ответ Создать тему
Опции темы

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