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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
breate
 Аватар для breate
56 / 56 / 2
Регистрация: 23.10.2009
Сообщений: 250
#1

Разыменование, QSort, const void в Type* - C++

09.02.2010, 21:24. Просмотров 1113. Ответов 5
Метки нет (Все метки)

в общем виде
C++
1
2
3
4
5
6
7
8
9
10
class type;
 
 
////////////////////
type **a;
qsort(a,n,4,sort);
//////////////////////
int sort(const void *a; const void *b){
type *x=*(type *) a; //ошибка
}
вопросс как правильно привести указатель

Добавлено через 21 минуту
вопрос снимается - разыменовал
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.02.2010, 21:24     Разыменование, QSort, const void в Type*
Посмотрите здесь:

Разыменование итератора C++
C++ Разыменование нулевого указателя
C++ const static vector<type>
Ссылка и Разыменование в с++ C++
Выдает ошибку в void main () и const double y=6.61*pow(10, -11); C++
C++ Как узнать параметры изображения, если оно представлено в виде const void* и размера данных
C++ Классы: ка победить ошибку из "const Type" в "Type &"
C++ Указатели и разыменование
Разыменование указателя! C++
C++ Разыменование указателя в структуре
C++ Non-const lvalue reference to type
Разыменование указателя C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
17183 / 5437 / 336
Регистрация: 30.03.2009
Сообщений: 14,736
Записей в блоге: 26
09.02.2010, 22:59     Разыменование, QSort, const void в Type* #2
C
1
const type *x = (const type*) a;
Теоретически модификатор const не нужен, но для контроля от собственных ошибок можно его и написать
easybudda
Эксперт С++
 Аватар для easybudda
9412 / 5435 / 917
Регистрация: 25.07.2009
Сообщений: 10,428
09.02.2010, 23:40     Разыменование, QSort, const void в Type* #3
Evg, у него просто указатель лишний раз разыменовывается, а так всё равно константный указатель на void к неконстантному на type приводится. Второй вариант:
C
1
type x = *(type*)a;
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
17183 / 5437 / 336
Регистрация: 30.03.2009
Сообщений: 14,736
Записей в блоге: 26
09.02.2010, 23:45     Разыменование, QSort, const void в Type* #4
Ога... название темы я что-то невнимательно прочитал
breate
 Аватар для breate
56 / 56 / 2
Регистрация: 23.10.2009
Сообщений: 250
09.02.2010, 23:59  [ТС]     Разыменование, QSort, const void в Type* #5
нет,всё не так, правильный вариант
C++
1
2
polyQue *ptmp1=*((polyQue**)a);
polyQue *ptmp2=*((polyQue**)b);
фактически я просто не так преобразую объекты, мине для работы нужен был указатель на объект а я сортирую указатели на указатель на объект, а QSort добавляет к этим указателям ещё один указатель; в итоге я привожу const void * к polyQue * в первом случае, и по этому не могу разыменовывать указатель, что в последствии вызывает ошибку при исполнении, по этому тип нужно было привести к ** а потом * снять и в результате с обоих сторон оказывается polyQue*!
easybudda
Эксперт С++
 Аватар для easybudda
9412 / 5435 / 917
Регистрация: 25.07.2009
Сообщений: 10,428
10.02.2010, 00:23     Разыменование, QSort, const void в Type* #6
breate, добавить где-то в начале
C
1
2
typedef polyQue* type;
...
и будет точно, как у меня... Это уже вариации на тему. Естественно, если сортируется массив указателей, то и передаются указатели на указатели...
Yandex
Объявления
10.02.2010, 00:23     Разыменование, QSort, const void в Type*
Ответ Создать тему
Опции темы

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