Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

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

Купить рекламу на форуме - 42 тыс руб за месяц

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

Денечка, есть такая вот задачка:
Класс − множество 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, 04:34   #2
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,772
По умолчанию

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

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

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

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

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

Цитата:
Сообщение от 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, 11:46   #6
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,772
По умолчанию

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

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

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

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


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Шаблоны функций C++ Карина7 Помощь студентам 2 03.07.2016 19: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 19:39