Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

Ответ
 
Опции темы
Старый 15.01.2018, 02:48   #1
GerMilitaryLoli
 
Регистрация: 15.01.2018
Сообщений: 6
Репутация: 10
По умолчанию Шаблоны функций и множества с перегрузками операторов

Денечка, есть такая вот задачка:
Класс − множество set. Дополнительно перегрузить следующие
операции:
- − удалить элемент из множества (типа set-item);
> − проверка на подмножество;
!= − проверка множеств на неравенство.
Суть в том, что я банально не могу вызвать перегруженный оператор -, и так как с множествами работаю в первый раз, очень сильно туплю, мог бы кто подсказать как нормально вызвать перегрузку да ткнуть носом и, если кому не трудно, примерно подсказать алгоритм других? Спасибо, кто поможет
Код:

#include <iostream>
#include <set>
#include<iterator>
using namespace std;
template <typename T>
class Shab
{
private:
public:
void show_set(set<int> SetOp);
set<int> operator -(set<int>SetOp);
set<int> operator >(set<int>SetOp);
set<int>operator !=(set<int>SetOp);
};
template <typename T>
void Shab<T>::show_set(set<int>SetOp)
{
copy( SetOp.begin(), SetOp.end(), ostream_iterator<int>(cout, " "));
}
template <typename T>
set<int> Shab<T>::operator-(set<int>SetOp)//перегрузка -
{
    SetOp.erase(27);
//cout<<"Какой элемент удалять? ";
    //int numb;
    //cin>>numb;
 
}
template <typename T>
set<int> Shab<T>::operator>(set<int>SetOp)
{
 
}
template <typename T>
set<int> Shab<T>::operator!=(set<int>SetOp)
{
 
}
int main()
{
    setlocale(LC_ALL, "rus");
    set<int> SetOne;
    SetOne.insert(27);
    SetOne.insert(1500);
    set<int>SetTwo;
    SetTwo.insert(1);
    SetTwo.insert(5);
    set<int>SetThree;
    SetThree.insert(14);
    SetThree.insert(28);
    Shab<int>SetOne_sh;
    cout<<endl<<"В первом множестве содержится "<<endl;
    SetOne_sh.show_set(SetOne);
    set<int>SetRes;
    SetRes=-SetOne;//попытка его вызвать
    return 0;
}

GerMilitaryLoli вне форума   Ответить с цитированием
Старый 15.01.2018, 05:34   #2
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 840
Репутация: 602
По умолчанию

Я так полагаю, нужно писать свой класс для множества, а не пытаться прикручивать непонятные костыли к std::set

Да ещё почему-то в явном виде std::set<int>
Зачем тогда вообще template <typename T> ?
Тип Т вообще нигде ни разу не использован..
Black Fregat вне форума   Ответить с цитированием
Старый 15.01.2018, 07:28   #3
waleri
Профессионал
 
Регистрация: 13.07.2012
Адрес: Нижний Новгород
Сообщений: 5,395
Репутация: 1665
По умолчанию

SetRes=-SetOne
заменить на
SetRes=SetRes-SetOne
waleri на форуме   Ответить с цитированием
Старый 15.01.2018, 12:14   #4
GerMilitaryLoli
 
Регистрация: 15.01.2018
Сообщений: 6
Репутация: 10
По умолчанию

Цитата:
Сообщение от Black Fregat Посмотреть сообщение
Я так полагаю, нужно писать свой класс для множества, а не пытаться прикручивать непонятные костыли к std::set

Да ещё почему-то в явном виде std::set<int>
Зачем тогда вообще template <typename T> ?
Тип Т вообще нигде ни разу не использован..
Я только только в этом разбираюсь, и извиняюсь за такую корявость и костыльность. В смысле свой класс для множества? Имеете ввиду класс с заданием этих множеств и т.д.?
GerMilitaryLoli вне форума   Ответить с цитированием
Старый 15.01.2018, 12:15   #5
GerMilitaryLoli
 
Регистрация: 15.01.2018
Сообщений: 6
Репутация: 10
По умолчанию

Цитата:
Сообщение от waleri Посмотреть сообщение
SetRes=-SetOne
заменить на
SetRes=SetRes-SetOne
Не компилится, да и не совсем понимаю смысл данной строчки
Да, забыл указать ошибку, извиняюсь
main.cpp|51|error: no match for 'operator-' (operand types are 'std::set<int>' and 'std::set<int>')|
Я так понял что он не видит перегрузку(?) потому что он не знает куда оперделять подаваемые значения(тут 2 std, если писать SetRes=SetRes-SetOne, если писать SetRes=-SetOne то будет одни std)
GerMilitaryLoli вне форума   Ответить с цитированием
Старый 15.01.2018, 12:46   #6
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 840
Репутация: 602
По умолчанию

Цитата:
Сообщение от GerMilitaryLoli Посмотреть сообщение
В смысле свой класс для множества? Имеете ввиду класс с заданием этих множеств и т.д.?
Я думаю, что Вы привели только свой вариант задания, а в самом начале шла общая формулировка, что-то вроде "реализовать контейнер.." Достаточно традиционное задание при изучении С++
Black Fregat вне форума   Ответить с цитированием
Старый 15.01.2018, 12:53   #7
GerMilitaryLoli
 
Регистрация: 15.01.2018
Сообщений: 6
Репутация: 10
По умолчанию

Цитата:
Сообщение от Black Fregat Посмотреть сообщение
Я думаю, что Вы привели только свой вариант задания, а в самом начале шла общая формулировка, что-то вроде "реализовать контейнер.." Достаточно традиционное задание при изучении С++
Не совсем понимаю тогда как это будет выглядеть
GerMilitaryLoli вне форума   Ответить с цитированием
Старый 15.01.2018, 13:29   #8
waleri
Профессионал
 
Регистрация: 13.07.2012
Адрес: Нижний Новгород
Сообщений: 5,395
Репутация: 1665
По умолчанию

Цитата:
Сообщение от GerMilitaryLoli Посмотреть сообщение
да и не совсем понимаю смысл данной строчки
операторы - и -= это разные вещи.
waleri на форуме   Ответить с цитированием
Старый 15.01.2018, 13:34   #9
GerMilitaryLoli
 
Регистрация: 15.01.2018
Сообщений: 6
Репутация: 10
По умолчанию

Цитата:
Сообщение от waleri Посмотреть сообщение
операторы - и -= это разные вещи.
А, понято, правда в условии написанно делать в формате типа set-item, так что у меня вариант все равно не верный. И должно быть как то так что ли:
SetRes=SetOne-2(допустим я удалю число 2)
GerMilitaryLoli вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Шаблоны функций C++ Карина7 Помощь студентам 2 03.07.2016 20:55
Шаблоны функций masashama Visual C++ 7 05.10.2011 01:46
Шаблоны функций. (*_*) Общие вопросы C/C++ 2 05.06.2009 20:21
шаблоны функций с++6.0 tanya Общие вопросы C/C++ 18 20.12.2008 20:39


15:58.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru