cpp
1#include <iostream> 2using namespace std 3 4void sort_pointers (void **ar, int n, int(*cmp)(const void *, const void *));
上記のようなconst void *型の引数を持つ関数ポインタにおいて
int func (int, int)を代入するにはどうすればいいんでしょうか?
main関数にて
cpp
1int main() { 2 int nums[2] = {1, 2} 3 int (*cmp)(const void *, const void *); 4 cmp = int_cmp; 5 sort_pointers(nums, 2, cmp); 6 return 0; 7}
のように使いたいです…
つ・・・伝われ・・・!
あと、void **arのような二重の値参照にはどんな意味なのですか?
調べても出てこない…。
もし、わかる方いらっしゃったらお願いいたします。
#追記
const void *型の引数はどんな型でも使用できるという意味合いだと認識しておりまして、cmp関数を引数に取っているのは、int型であろうとchar型であろうと比較のための関数を作成してあげれば、ソートができるから、だと認識しています。
cpp
1int int_cmp(int a, int b){ 2 return a -b; 3} 4 5int char_cmp(char a, char b){ 6 return int(a -b); 7}
こんな関数がいくつかあり、ソートする配列の型によって、読み込む関数ポインタを変えるものだと思っています。
実際に上記の2関数(int_cmp, char_cmp)を読み換えられるのでしょうか?
それとも何か根本的に間違っているのでしょうか?
回答5件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。