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

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

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

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

09.02.2010, 21:24. Просмотров 1180. Ответов 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 минуту
вопрос снимается - разыменовал
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.02.2010, 21:24
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Разыменование, QSort, const void в Type* (C++):

Выдает ошибку в void main () и const double y=6.61*pow(10, -11); - C++
Сила притяжения F между телами массами m1 и m2, находящимися на расстоянии r друг от друга, равна: F=y*m1*m2/(r*r); , где гравитационная...

Non-const lvalue reference to type - C++
Добрый день. Мне надо передать указатель на матрицу (Шахматная доска) Piece* board в функцию (Загрузить состояние доски из файла,...

const static vector<type> - C++
Мне нужно создать внутри класса вектор цветов предлагаемых в конструкторе как дефолтные... лучше static, лучше const... главное - чтобы...

Классы: ка победить ошибку из "const Type" в "Type &" - C++
Создаю свой класс class MyClass {private: int *dat; WCHAR *buf; inline size_t GetLength(){return dat? dat: 0;}; public: ...

Как узнать параметры изображения, если оно представлено в виде const void* и размера данных - C++
Доброго. Собственно проблема в шапке. Файл изображения скачивается из интернета. Смотрел в сторону GDIplus, ничего путного пока не...

int const * const foo(const int* param) const - разъясните значение квалификаторов - C++
int const * const foo(const int* param) const -----1------2----------3----------------4 1: ? 2: делает содержимое массива или...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Evg
Эксперт CАвтор FAQ
17802 / 6008 / 387
Регистрация: 30.03.2009
Сообщений: 16,511
Записей в блоге: 26
09.02.2010, 22:59 #2
C
1
const type *x = (const type*) a;
Теоретически модификатор const не нужен, но для контроля от собственных ошибок можно его и написать
0
easybudda
Модератор
Эксперт CЭксперт С++
9622 / 5570 / 946
Регистрация: 25.07.2009
Сообщений: 10,695
09.02.2010, 23:40 #3
Evg, у него просто указатель лишний раз разыменовывается, а так всё равно константный указатель на void к неконстантному на type приводится. Второй вариант:
C
1
type x = *(type*)a;
0
Evg
Эксперт CАвтор FAQ
17802 / 6008 / 387
Регистрация: 30.03.2009
Сообщений: 16,511
Записей в блоге: 26
09.02.2010, 23:45 #4
Ога... название темы я что-то невнимательно прочитал
0
breate
56 / 56 / 2
Регистрация: 23.10.2009
Сообщений: 250
09.02.2010, 23:59  [ТС] #5
нет,всё не так, правильный вариант
C++
1
2
polyQue *ptmp1=*((polyQue**)a);
polyQue *ptmp2=*((polyQue**)b);
фактически я просто не так преобразую объекты, мине для работы нужен был указатель на объект а я сортирую указатели на указатель на объект, а QSort добавляет к этим указателям ещё один указатель; в итоге я привожу const void * к polyQue * в первом случае, и по этому не могу разыменовывать указатель, что в последствии вызывает ошибку при исполнении, по этому тип нужно было привести к ** а потом * снять и в результате с обоих сторон оказывается polyQue*!
0
easybudda
Модератор
Эксперт CЭксперт С++
9622 / 5570 / 946
Регистрация: 25.07.2009
Сообщений: 10,695
10.02.2010, 00:23 #6
breate, добавить где-то в начале
C
1
2
typedef polyQue* type;
...
и будет точно, как у меня... Это уже вариации на тему. Естественно, если сортируется массив указателей, то и передаются указатели на указатели...
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.02.2010, 00:23
Привет! Вот еще темы с ответами:

Дважды вычислить значение выражения, используя функции возвращающие void и не void - C++
Хай!Помогите решить Дважды вычислить значение выражения, используя функции возвращающие void и не void....

Typedef void (WINAPI *GLEND)(void), как вызывать? - C++
импортирую метод GLEND glmethod = (GLEND) GetProcAddress(hModule, &quot;glEnd&quot;); как его теперь коректно вызвать: typedef void...

char operator[](unsigned short offset) const; // что означает const? - C++
Собстенно вопрос уже озвучен :).

Что это bool operator== (const CLASS&) const; - C++
Что это? class CLASS { public: bool operator== (const CLASS&amp;) const; ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
10.02.2010, 00:23
Ответ Создать тему
Опции темы

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