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

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

Войти
Регистрация
Восстановить пароль
 
xtorne21st
интересующийся
304 / 275 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
#1

Проблемы с приведением типов для компоранда для qsort - C++

12.02.2013, 02:32. Просмотров 333. Ответов 6
Метки нет (Все метки)

Вот так всё ок (во всяком случаи компилятор не выдвинул никаких предупреждений):
C++
1
2
3
4
5
6
int comp(const void* i, const void* j)
{
    Worker* left = &(*(Worker*)i);
    Worker* right = &(*(Worker*)j);
    return left->surname > right->surname;
}
Пытаюсь минимизировать всё в одну строчу для return, что-то типа:
C++
1
2
3
4
int comp(const void* i, const void* j)
{
    return *(Worker*)i->surname > *(Worker*)j->surname;
}
да не тут-то было, перепробовал кучу вариантов и всё тщетно. Подскажите, пожалуйста, как нужно это сделать.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.02.2013, 02:32
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Проблемы с приведением типов для компоранда для qsort (C++):

Разница между приведением типов - C++
Всем пт! Поясните плз разницу между приведениями типов: double (a); (double) a; static_cast <double> (a);

qsort для структуры - C++
Хочу отсортировать массив вот такой вот структуры struct S1 { char Word; char Eng2; char Eng1; char Fr; friend istream&...

Qsort для массива структур - C++
Да, знаю, что таких тем на форуме уже полно, как и кода, но смысл мне всё равно непонятен. Есть массив таких рёбер: struct edge{ int...

Шаблон функции сравнения для qsort() - C++
Хочу отсортировать массив из int и из double с помощью qsort(). Для этого необходимо определить функцию сравнения элементов. Думал...

Найти предельные значения для целочисленных типов. Не использовать заранее определенные константы границ типов. - C++
Буду благодарен! Найти предельные значения для целочисленных типов. Не использовать заранее определенные константы границ типов.

Функция qsort для сортировки массивов структур - C++
В общем есть структура struct User { int id; char nickname; int karma; };

6
kravam
быдлокодер
1704 / 891 / 45
Регистрация: 04.06.2008
Сообщений: 5,496
12.02.2013, 03:39 #2
Нужно определение Worker
0
alex_x_x
бжни
2450 / 1655 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
12.02.2013, 03:56 #3
читаем: http://en.cppreference.com/w/cpp/language/operator_precedence

у тебя здесь бьются за порядок * и ->
-> приоритетней, чем * - поэтому и ошибка

должно быть так:
C
1
return ((Worker*)i)->surname > ((Worker*)j)->surname;
1
xtorne21st
интересующийся
304 / 275 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
12.02.2013, 04:32  [ТС] #4
Цитата Сообщение от alex_x_x Посмотреть сообщение
у тебя здесь бьются за порядок * и ->
-> приоритетней, чем * - поэтому и ошибка
Я наверно все варианты перепробовал кроме правильного

Добавлено через 6 минут
Цитата Сообщение от alex_x_x Посмотреть сообщение
-> приоритетней, чем * - поэтому и ошибка
А по вашей ссылке, вроде ноборот
0
alex_x_x
бжни
2450 / 1655 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
12.02.2013, 04:40 #5
Цитата Сообщение от xtorne21st Посмотреть сообщение
А по вашей ссылке, вроде ноборот
как так

2 −> Element selection through pointer
3 * Indirection (dereference)
1
xtorne21st
интересующийся
304 / 275 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
12.02.2013, 05:12  [ТС] #6
Цитата Сообщение от alex_x_x Посмотреть сообщение
2 −> Element selection through pointer
3 * Indirection (dereference)
Прошу прощения, перепутал с Pointer to member. Ночь пора спать
Ещё раз спасибо.
0
0x10
12.02.2013, 06:06     Проблемы с приведением типов для компоранда для qsort
  #7

Не по теме:

А что мешает использовать http://www.cplusplus.com/reference/algorithm/sort/ ?

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.02.2013, 06:06
Привет! Вот еще темы с ответами:

Почему при выводе указателя получаем для char - значение по адресу, а для других типов - адрес - C++
Есть следующий код. Результат работы этой программы представлен на рисунке. Почему при выводе указателя для char возвращается значение, а...

Используя перегрузки, написать функцию для выполнения действий, для следующих типов данных: float, int, double - C++
Используя перегрузки, написать функцию для выполнения действий, для следующих типов данных float, int, double, long: приведение типов.

Специализация шаблона для стандартных типов - C++
Пишу динамическую структуру данных (не суть важно какую, допустим для простоты стек). Она работает с объектами типа Box, которые: 1....

Статический контейнер для разных типов - C++
Доброго здоровица. Как объявить контейнер для хранении различных типов? Правилен ли такой метод? template <class T> class...


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

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

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