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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.06.2012, 13:08   #1
Gedbro
 
Регистрация: 24.01.2012
Сообщений: 7
По умолчанию Связные списки С++

Привет всем.
Вот собственно код:
Код:
#include "list.h"
#include "inface.h"

using namespace inface;
namespace List
{
void PrintList(list <PLANTS*> &plant,const char name[80])
{
    list <PLANTS*>::iterator pos;
    ofstream out;
    out.open(name);
    for(pos=plant.begin();pos!=plant.end();++pos)
    {
      (*pos)->Save(out);
      out<<endl;
    }
    out.close();
}
void OutputList (list <PLANTS*> &plant)
{
    list <PLANTS*>::iterator pos;
    cout<<endl;
    for(pos=plant.begin();pos!=plant.end();++pos)
    {
      (*pos)->Species();
      cout<<endl;
    }
}
void Search_obg(list <PLANTS*> &plant, const string type)
{
    list <PLANTS*>::iterator pos;
    int n=0;
    for(pos=plant.begin();pos!=plant.end();++pos)
    {
      if ((*(*pos)) == UnRus(type))
       {
          (*pos)->Species();
          cout<<endl;
          n++;
       }
      else
           if (type==Rus("Растения"))
           {
               (*pos)->Species();
                cout<<endl;
                n++;
           }
}
}
list <PLANTS*> :: iterator Pos(list <PLANTS*> &plant, unsigned int n)
{
    list <PLANTS*> :: iterator pos;
    pos = plant.begin();
    while (n>0) {pos++; n--;}
    return pos;
}
void InsertToList(list <PLANTS*> &plant, unsigned int n, PLANTS *t)
{
    if ((plant.size()>n)&&(n>0))
    {
        list <PLANTS*> :: iterator pos;
        pos = Pos(plant,n);
        plant.insert(pos, t);
    }
    else {cout<<Rus("Ошибка вставки");}
}
void DeleteFromList(list <PLANTS*> &plant, unsigned int n)
{
    if ((plant.size()>n)&&(n>0))
    {
        list <PLANTS*> :: iterator pos;
        pos = Pos(plant,n);
        plant.erase(pos);
    }
    else cout<<Rus("Ошибка удаления!")<<endl;
}
}
у меня в функции void Search_obg() Codeblocks обнаружил такую ошибку:
Код:
\list.cpp|35|error: no match for 'operator==' in '* pos.std::_List_iterator<_Tp>::operator* [with _Tp = plants::PLANTS*]() == rus::UnRus(std::basic_string<char, std::char_traits<char>, std::allocator<char> >(((const std::basic_string<char, std::char_traits<char>, std::allocator<char> >&)(& type))))'|
Целое утро пытаюсь понять что это такое.
Как исправить?
Gedbro вне форума Ответить с цитированием
Старый 06.06.2012, 10:59   #2
yandzee
Пользователь
 
Регистрация: 07.12.2010
Сообщений: 13
По умолчанию

Цитата:
no match for 'operator=='
ни о чем не говорит?

Для класса PLANTS необходимо перегрузить оператор ==
yandzee вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Связные списки c++ cheef Помощь студентам 5 11.03.2012 22:12
Связные списки MasterSporta Общие вопросы C/C++ 2 19.05.2011 02:30
Связные списки в графах Neitrosha Помощь студентам 0 17.05.2011 20:38
Связные списки Маринка777 Общие вопросы .NET 3 08.06.2010 23:41
Связные списки\строки Khristoshin Помощь студентам 0 27.01.2010 20:44