Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Огибка при перегрузке "<" 
:(
    Опции темы
nathmorp
Дата 7.12.2013, 15:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 30.11.2013

Репутация: нет
Всего: нет



Привет всем!
просто хочу написать функцию сравнения 2 обьектов одного класса по pBibnr
но мне выдает такую ошибку:
error C2662: myPerson::get_Bibnr: невозможно преобразовать указатель "this" из "const myPerson" в "myPerson &";

В классе myPerson:
Код

myString pBibnr;
const myString*  myPerson::get_Bibnr()        { return &pBibnr;    }
int operator <(const myPerson& other);


Код

int myPerson::operator<( const myPerson& other)
{
    const myString bib_this = *this->get_Bibnr();
    const myString bib_other = &other.get_Bibnr();
   
        if( bib_this < bib_other ) return 1;
        else                                 return 0;

}

это уже перегрузка в классе myString:
 
Код

int myString::operator <(const myString& other)
{
 for(int i=0; i<max(len,other.len); i++)
  {
   if(buf[i]=='\0')        return 1;
   int sym1=buf[i];        //um nicht zeichen zu aendern
   int sym2=other.buf[i];
   //anstatt tolower
   /*if(sym1>64 && sym1<91)sym1+=32;               
   if(sym2>64 && sym2<91)sym2+=32; */         
   //tolower gehört zu ctype.h 
   if(tolower(sym1) < tolower(sym2)) return 1;       //erfolg a<b
   if(tolower(sym1) > tolower(sym2)) return 0;
  };
 return 0;
}


Подскажите пожалуйста где же я напортачила... Спасибо

Это сообщение отредактировал(а) nathmorp - 7.12.2013, 15:07
PM MAIL   Вверх
volatile
Дата 8.12.2013, 11:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 16
Всего: 85



Цитата(nathmorp @  7.12.2013,  15:05 Найти цитируемый пост)
int myPerson::operator<( const myPerson& other)
{
    const myString bib_this = *this->get_Bibnr();
    const myString bib_other = &other.get_Bibnr();
   
        if( bib_this < bib_other ) return 1;
        else                                 return 0;

}

Эту функцию попробуйте записать так:
Код

int myPerson::operator < (const myPerson& other) const
{
    return *get_Bibnr() < *other.get_Bibnr();
}


Добавлено через 1 минуту и 32 секунды
Цитата(nathmorp @  7.12.2013,  15:05 Найти цитируемый пост)
int myString::operator <(const myString& other) const
{


PM MAIL   Вверх
xvr
Дата 9.12.2013, 13:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 35
Всего: 223



Тут тоже нужен const
Цитата(nathmorp @  7.12.2013,  15:05 Найти цитируемый пост)
const myString*  myPerson::get_Bibnr()  const  { return &pBibnr;    }

Кстати, лучше возвращать референс, а не указатель -
Код

const myString&  myPerson::get_Bibnr()  const  { return pBibnr;    }

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0662 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.