基本的なエラーだと思うのですが修正の仕方がわかりません。
qsortを利用して文字列のソートを行おうとしています。
以下のコードを組んだのですがエラー
error C2664: 'qsort' : 4 番目の引数を 'int (const void *,const void *)'
から 'int (__cdecl *)(const void *,const void *)' に変換できません
を出します。
void CDlg::getFolderName(CString FolderPath) // 指定のあるフォルダパス
{
// フォルダ名の取得
WIN32_FIND_DATA wfd;
HANDLE hFindFile;
hFindFile = FindFirstFile((LPCTSTR)(FolderPath + \\*.*), &wfd);
CString FldName;
char *tmpFldName[50]; // 一時的にフォルダ名を保存
LONG fldcun = 0; // 検索したフォルダ数(文字列の数)
do{
FldName = wfd.cFileName;
if(strcmp(wfd.cFileName,.)!=0 &&
strcmp(wfd.cFileName,..)!=0 &&
(wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) != 0){
tmpFldName[fldcun] = wfd.cFileName; fldcun ++;
}
}while(FindNextFile(hFindFile, &wfd) == TRUE);
qsort(tmpFldName, fldcun, sizeof(char *), pstrcmp); // クイックソート
}
// 文字列の比較
int CDlg::pstrcmp(const void *a, const void *b)
{
return _stricmp( * ( char** )a, * ( char** )b);
}
エラーの意味はわかるのですがどうやってpstrcmpを
(__cdecl *)(const void *,const void *)
にすればいいのかがわかりません。
ご教授お願いいたします。
申し訳ありません。
環境を書き忘れてしまいました。
Win2000 VC++6 MFCです。
よろしくお願いいたします。
名前が変です。
琥珀(こはく)と打ってるんですが・・・登録後
琅珎又は珞珈に変わっているようです。
同一人物です。申し訳ありません
#include <iostream>
#include <cstdlib>
using namespace std;
class CDlg {
static int pstrcmp(const void *a, const void *b) {
return _stricmp(*(char**)a, *(char**)b);
}
public:
void sort() {
char* tbl[3];
tbl[0] = banana;
tbl[1] = cherry;
tbl[2] = apple;
qsort(tbl, 3, sizeof(char*), &CDlg::pstrcmp);
cout << tbl[0] << '/' << tbl[1] << '/' << tbl[2] << endl;
}
};
int main() {
CDlg dlg;
dlg.sort();
return 0;
}
呼び出しの方法が違うんですね。
わかりました。
επιστημηさんありがとうございます。