• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:error C3867 関数呼び出しには引数リスト)

error C3867 関数呼び出しには引数リスト

このQ&Aのポイント
  • VS2008 VC++ 環境でコンパイル中に、error C3867 関数呼び出しには引数リストがありませんというエラーが発生
  • エラーの原因は、Cortex_SetDataHandlerFunc関数に引数リストを渡していないため
  • 解決方法は、関数呼び出し時に引数リストを渡すことである

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

いや、だから、 Cortex_SetDataHandlerFunc() の引数にはメンバ関数を渡せないんじゃないですか? 通常の関数とメンバ関数は互換ではありませんよ?

ichigo61
質問者

お礼

ご指摘ありがとうございました。 通常の関数に変更したら、コンパイルエラーは直りました。

その他の回答 (2)

回答No.2

> Cortex_SetDataHandlerFunc(&CFrrjiftestDlg::MyDataHandler); ←これにすると、 > > C2664: 'Cortex_SetDataHandlerFunc' : 1 番目の引数を 'void (__thiscall CFrrjiftestDlg::* )(sFrameOfData *)' から 'void (__cdecl *)(sFrameOfData *)' に変換できません ←このえらーになります。 Cortex_SetDataHandlerFunc() の引数にはメンバ関数を渡せないんじゃないですか? 通常の関数とメンバ関数は互換ではありませんよ?

ichigo61
質問者

補足

もう少し説明しますと、 // frrjiftestDlg.h : header file class CFrrjiftestDlg : public CDialog { public: void PrintFrameOfData(FILE *handle, sFrameOfData *FrameOfData); void MyDataHandler(sFrameOfData* FrameOfData); }; // frrjiftestDlg.cpp : implementation file void CFrrjiftestDlg::MyDataHandler(sFrameOfData* FrameOfData) { PrintFrameOfData(handle, FrameOfData); } void CFrrjiftestDlg::PrintFrameOfData(FILE *handle, sFrameOfData *FrameOfData) { いろんな処理 } void CFrrjiftestDlg::OnBnClickedButton1() { //ここがメイン処理のボタンを押下したときの処理 Cortex_SetDataHandlerFunc(MyDataHandler); ←ここがコンパイルエラー } error C3867: 'CFrrjiftestDlg::MyDataHandler': 関数呼び出しには引数リストがありません。メンバへのポインタを作成するために '&CFrrjiftestDlg::MyDataHandler' を使用してください ↑このエラーになります。 下記の記述にすると、それぞれのエラーになります。 //Cortex_SetDataHandlerFunc(&CFrrjiftestDlg::MyDataHandler); /* C2664 ERROR */ //Cortex_SetDataHandlerFunc(&MyDataHandler); /* C2276 ERROR */ どんな記述にすれば、いいのでしょうか?

回答No.1

> エラーの説明をみると、「メンバへのポインタを作成するために '&CFrrjiftestDlg::MyDataHandler' を使用してください」となっていますが、いろいろ書いてみましたが、だめでした。 "だめ"とは? > Cortex_SetDataHandlerFunc(MyDataHandler);   ← この行でエラー発生 これを Cortex_SetDataHandlerFunc(&CFrrjiftestDlg::MyDataHandler); あるいは Cortex_SetDataHandlerFunc(&MyDataHandler); としてもだめだったのですか? どう"だめ"なのですか?

ichigo61
質問者

補足

Cortex_SetDataHandlerFunc(&MyDataHandler); ←これにすると、 error C2276: '&' : 仮想関数のアドレスを取ろうとしました。 ←このエラーになり、 Cortex_SetDataHandlerFunc(&CFrrjiftestDlg::MyDataHandler); ←これにすると、 C2664: 'Cortex_SetDataHandlerFunc' : 1 番目の引数を 'void (__thiscall CFrrjiftestDlg::* )(sFrameOfData *)' から 'void (__cdecl *)(sFrameOfData *)' に変換できません ←このえらーになります。

関連するQ&A