С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

операторы - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Функция указатель на класс, определенный внутри шаблонного класса http://www.cyberforum.ru/cpp-beginners/thread966941.html
Доброго времени суток! Помогите пожалуйста разобрать со следующим кодом: template <class T> class List{ class Node{ public: T d; Node(T d){/..../}; //тело...
C++ Функции fseek, _fseeki64 Ребят как по умному объяснить преподавателю что я использую функцию _fseeki64 для того чтобы создавать большие файлы, потому что функция fseek не создает файлы больше 4GB. Вот сам код: #include... http://www.cyberforum.ru/cpp-beginners/thread966886.html
C++ Разъясните пожалуйста фрагмент программы
Даны произвольные числа a b c.Написать программу,которая проверяла бы,можно ли построить треугольник с такими длинами сторон, и если можно, то определить вид треугольника по соотношению сторон...
Не могу разобраться с enum C++
Не могу понять как сделать вывод на экран. Есть задачка: Написать программу, которая предлагает пользователю ввести порядковый номер карты из колоды и выводит в консоль масть и достоинство карты....
C++ Regex в С++ http://www.cyberforum.ru/cpp-beginners/thread966869.html
Здравствуйте! Я хочу найти все вхождения подстроки типа 1+1 в строку. std::string str = "0011011000001"; std::regex rx ("1+1"); std::smatch res; std::regex_search(str, res, rx); for...
C++ Ошибка в книге или я что то не понимаю ? Задача по наследованию: Написать класс "Служащие" которые получают только процент от продаж и "Служащие" которые получают % и мин. З\п. Я пока написал 1 базовый класс и столкнулся с проблемой. ... подробнее

Показать сообщение отдельно
NoodLez
1 / 1 / 0
Регистрация: 27.06.2012
Сообщений: 19

операторы - C++

02.10.2013, 10:35. Просмотров 278. Ответов 2
Метки (Все метки)

Здравствуйте, столкнулся с такой проблемой
Есть мной написаный класс Set(множество с дискретной математики)
Есть метод Complement который мне должен вернуть новый обьект, дополнение множества
C++
1
2
3
4
5
6
7
8
9
10
Set Complement()
    {
        vector<set> temp = _vector;
        for(int i = 0; i < size; i++)
            if(temp[i].getIsPlaced())
                temp[i].setIsPlaced(false);
            else
                temp[i].setIsPlaced(true);
        return Set(temp);
    }
Есть перегруженый операторы = и +
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Set& operator=(Set& _set)
    {
        _vector = _set._vector;
        size = _set.size;
        return this;
    }
 
friend Set operator+(Set& left, Set& right);
Set operator+(Set& left, Set& right)
{
    vector<set> temp;
    for(int i = 0; i < left.size; i++)
    {
        if(left._vector[i].getIsPlaced() || right._vector[i].getIsPlaced())
            temp.push_back(set(true, i+1));
        else
            temp.push_back(set(false, i+1));
    }
    return Set(temp);
}
Например есть код
C++
1
2
3
4
5
6
7
Set A;
Set B;
Set Y;
 
Y = B.Complement(); /* при попытке зделать такое, выдает ошибку
                                   error: no match for 'operator=' in 'Y = Set::Complement()()' */
Y = A + B.Complement(); // аналогичная проблема и здесь
Без метода Complement перегруженые операторы работают, но вот когда я хочу его использовать начинают вылезать error.
Разве не должен создаться в методе Complement временый обьект которые приплюсует или присвоиться и пропадет?
Или в чем может быть причина?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.