Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 05.05.2015
Сообщений: 1
1

Ошибка при применении алгоритма rotare к set своих классов

05.05.2015, 00:48. Показов 639. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Итак , всем доброго времени суток...
Ничего похожего не нашел
Есть свой класс с перегруженными методами
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
class book
{   
public:
    std::string name;
    std::string outhor;
    int pages;
    int year;
    book();
    book(const book &);
    book(std::string,std::string,int,int);
    book& operator=(book &);
    friend std::istream& operator>>(std::istream& out, book &given);
    friend std::ostream&  operator<<(std::ostream& ,const book &); 
    bool operator==(book &); 
    bool operator!=(book &); 
    bool operator<(book &);  
    bool operator>(book &); 
    bool operator>=(book &); 
    bool operator<=(book &); 
    operator int()
    {
        return this->year;
    };
    void set_new(book & given)
    {
        this->name = given.name;
        this->outhor = given.outhor;
        this->pages = given.pages;
        this->year = given.year;
    }
};
Интересующая нас перегрузка =
C++
1
2
3
4
5
6
7
8
book& book::operator=(book &given)
{
    this->year = given.year;
    this->pages = given.pages;
    this->name = given.name;
    this->outhor = given.outhor;
    return *this;
}
Сам алгоритм должен применяться к set этих самых книг

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
int beg,cent,end, size = set1.size();
cout<<"Введите начало \"большого\" подмассива:";
cin>>beg;
cout<<"Конец: ";
cin>>end;
cout<<"Введите номер элемента,относительно какого элемента менять(останется во 2-ом подмассиве)";
cin>>cent;
if(end > size || beg > size || cent > size || beg > end || cent > end || cent < beg || beg < 1 || cent < 1 || end < 1 || (end-beg)<2)
{
    cout<<"Вы ошиблись при вводе номеров элементов, повторите попытку\n________________________________"<<endl;
    break;
}
int i = 1;
set<book>::iterator it1 = set1.begin();
set<book>::iterator it2 = set1.end();
set<book>::iterator it1_5 = set1.begin();
it2--;
while(i < beg)
{
    it1++;
    i++;
}
while(end < size)
{
    it2--;
    size--;
}
i = 0;
while(i < cent)
{
    it1_5++;
    i++;
}
std::rotate(it1,it1_5,it2);
Ругается на перегрузку =, но перегрузить его должным образом не получается....

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\utility(103): error C2678: бинарный "=": не найден оператор, принимающий левый операнд типа "const book" (или приемлемое преобразование отсутствует)
1>          c:\универ\ооп\kontein\kontein\book.h(13): может быть "book &book::operator =(book &)"
1>          при попытке сопоставить список аргументов "(const book, const book)"
1>          c:\program files (x86)\microsoft visual studio 10.0\vc\include\xutility(2134): см. ссылку на создание экземпляров функции шаблон при компиляции "void std::swap<const book>(_Ty &,_Ty &)"
1>          with
1>          [
1>              _Ty=const book
1>          ]
1>          c:\program files (x86)\microsoft visual studio 10.0\vc\include\xutility(3215): см. ссылку на создание экземпляров функции шаблон при компиляции "void std::iter_swap<_BidIt,_BidIt>(_FwdIt1,_FwdIt2)"
1>          with
1>          [
1>              _BidIt=std::_Tree_unchecked_const_iterator<std::_Tree_val<std::_Tset_traits<book,std::less<book>,std::allocator<book>,false>>>,
1>              _FwdIt1=std::_Tree_unchecked_const_iterator<std::_Tree_val<std::_Tset_traits<book,std::less<book>,std::allocator<book>,false>>>,
1>              _FwdIt2=std::_Tree_unchecked_const_iterator<std::_Tree_val<std::_Tset_traits<book,std::less<book>,std::allocator<book>,false>>>
1>          ]
1>          c:\program files (x86)\microsoft visual studio 10.0\vc\include\xutility(3222): см. ссылку на создание экземпляров функции шаблон при компиляции "void std::_Reverse<_Iter>(_BidIt,_BidIt,std::bidirectional_iterator_tag)"
1>          with
1>          [
1>              _Iter=std::_Tree_unchecked_const_iterator<std::_Tree_val<std::_Tset_traits<book,std::less<book>,std::allocator<book>,false>>>,
1>              _BidIt=std::_Tree_unchecked_const_iterator<std::_Tree_val<std::_Tset_traits<book,std::less<book>,std::allocator<book>,false>>>
1>          ]
1>          c:\program files (x86)\microsoft visual studio 10.0\vc\include\xutility(3247): см. ссылку на создание экземпляров функции шаблон при компиляции "void std::reverse<_BidIt>(_BidIt,_BidIt)"
1>          with
1>          [
1>              _BidIt=std::_Tree_unchecked_const_iterator<std::_Tree_val<std::_Tset_traits<book,std::less<book>,std::allocator<book>,false>>>
1>          ]
1>          c:\program files (x86)\microsoft visual studio 10.0\vc\include\xutility(3300): см. ссылку на создание экземпляров функции шаблон при компиляции "void std::_Rotate<std::_Tree_unchecked_const_iterator<_Mytree>>(_BidIt,_BidIt,_BidIt,std::bidirectional_iterator_tag)"
1>          with
1>          [
1>              _Mytree=std::_Tree_val<std::_Tset_traits<book,std::less<book>,std::allocator<book>,false>>,
1>              _BidIt=std::_Tree_unchecked_const_iterator<std::_Tree_val<std::_Tset_traits<book,std::less<book>,std::allocator<book>,false>>>
1>          ]
1>          c:\универ\ооп\kontein\kontein\set.cpp(195): см. ссылку на создание экземпляров функции шаблон при компиляции "_FwdIt std::rotate<std::_Tree_const_iterator<_Mytree>>(_FwdIt,_FwdIt,_FwdIt)"
1>          with
1>          [
1>              _FwdIt=std::_Tree_const_iterator<std::_Tree_val<std::_Tset_traits<book,std::less<book>,std::allocator<book>,false>>>,
1>              _Mytree=std::_Tree_val<std::_Tset_traits<book,std::less<book>,std::allocator<book>,false>>
1>          ]
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\utility(104): error C2678: бинарный "=": не найден оператор, принимающий левый операнд типа "const book" (или приемлемое преобразование отсутствует)
1>          c:\универ\ооп\kontein\kontein\book.h(13): может быть "book &book::operator =(book &)"
1>          при попытке сопоставить список аргументов "(const book, const book)"
Буду признателен, если поможете)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.05.2015, 00:48
Ответы с готовыми решениями:

Ошибка при применении фильтра
Здравствуйте. Подскажите, пожалуйста, в чем может быть ошибка? База создана в IBExpert. В Delphi на...

Возникает ошибка при применении рекурсии
Программа работала с ошибкой, причём не давая сбоя, и вот я решил её совсем немного изменить, при...

Ошибка при применении перечислений в Switch Case
Кусок програмы private List&lt;Webcast&gt; GetByType(string id) { var result = new List&lt;Webcast&gt;();...

Ошибка при применении автофильтра с датой в качестве критерия
Добрый день. Столкнулся с такой проблемой. При вводе даты в поле все хорошо и под отладчиком...

1
244 / 164 / 133
Регистрация: 30.09.2012
Сообщений: 690
05.05.2015, 01:46 2
***

Добавлено через 10 минут

Не по теме:

Цитата Сообщение от zimokk Посмотреть сообщение
"=": не найден оператор, принимающий левый операнд типа "const book" (или приемлемое преобразование отсутствует)
C++
1
2
3
4
5
6
7
8
book& book::operator=(const book &given)
{
    this->year = given.year;
    this->pages = given.pages;
    this->name = given.name;
    this->outhor = given.outhor;
    return *this;
}




Функция rotate ведь изменяет последовательность, а контейнер set - ассоциативный, поэтому изменить последовательность внутри так просто не получится.
0
05.05.2015, 01:46
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.05.2015, 01:46
Помогаю со студенческими работами здесь

Ошибка #ИМЯ при применении близнецов пользовательской функции
Добрый день! Столкнулся с чем, при открытии книги, в модуле которого имеется пользовательская...

БПФ с использованием AForge.NET: ошибка при применении преобразования
Вообщем программа до невозможного проста: Загружаю изображение, делаю БПФ над ним с помощью...

Ошибка при применении к элементам матрицы функции (Conway's Game of Life)
Здравствуйте, форумчане. Работаю над конвеевской игрой &quot;жизнь&quot;, и при попытке создания нового...

При применении echo появляется ошибка - Parse error: syntax error, unexpected '.' in
Снова я, продолжаю дорабатывать форму. В интернете нашел пример проверки формы на наличие пустых...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru