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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
NoodLez
1 / 1 / 0
Регистрация: 27.06.2012
Сообщений: 19
#1

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

02.10.2013, 10:35. Просмотров 267. Ответов 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 временый обьект которые приплюсует или присвоиться и пропадет?
Или в чем может быть причина?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.10.2013, 10:35
Здравствуйте! Я подобрал для вас темы с ответами на вопрос операторы (C++):

С++.Операторы в С++: условные операторы, операторы break и continue - C++
Выяснить, пересекаются ли параболы у=аx2+bx+с и у=dx2+ex + f. При положительном ответе найти точки пересечения.

Определить и вывести количество дней между двумя датами (логические операторы и операторы ветвлений) - C++
Задачка Пользователь вводит две даты (день, месяц, год в виде целых чисел). Необходимо определить и вывести количество дней между этими...

Операторы присваивания, ввода- вывода. Операторы ветвления, выбора - C++
Даны два ненулевых числа. Найти их сумму, разность, произведение, частное, остаток и целую часть от деления. Добавлено через 8 часов...

«Языки и технологии программирования» «Операторы цикла. Условные операторы» - C++
Не получается сделать что бы программа выводила все значения в промежутке, она выводит только одно. условия | ((z^3)+sin...

Операторы языка С++: операторы цикла (исправьте программу) - C++
#include &lt;iostream&gt; #include &lt;cstdlib&gt; #include &lt;cmath&gt; using namespace std; int main() { int a,n; float y,x; cout&lt;&lt;...

Операторы принятия решения и операторы цикла. - C++
Пожалуйста, помогите. Нужно срочно сделать задания: 1)Ввести с клавиатуры три символа sym1, sym2, sym3. Поменять их значения таким...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Tulosba
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
02.10.2013, 10:50 #2
Вероятно дело в const:
C++
1
Set& operator=(const Set& _set)
Аналогично для operator+
NoodLez
1 / 1 / 0
Регистрация: 27.06.2012
Сообщений: 19
02.10.2013, 11:24  [ТС] #3
Спасибо дружище
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.10.2013, 11:24
Привет! Вот еще темы с ответами:

Операторы цикла и операторы передачи управления - C++
Вычислить сумму ряда S с погрешностью эпсилон, задаваемой с клавиатуры. Вывести количество итераций, сделанных при вычислении. Если...

Операторы ветвления и операторы передачи управления - C++
1. Вычислить значения функции F при вещественных a, b, c, x, вводимых с клавиатуры. 2. Составить программу, которая печатает...

Переписать символы с входящего рядка в выходящий, меняя операторы языка паскаль на операторы языка С++ := на =, = на ==, # на != - C++
Переписать символы с входящего рядка в выходящий, меняя операторы языка паскаль на операторы языка С++ := на =, = на ==, # на != Спасибо.

Операторы отношений и логические операторы - C++
Всем добрый день. Очередной день изучения Г.Шилда С++ базовый курс, дошел до Операторов отношений, все понял, но не компилируется данный...


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru