タイトルにあるとおりの質問なんですが、
こういったエラーが出ます。
C言語でのプログラムと何がちがうかわかりません。
何か参考になるものなど教えてください。
: '*' : オペランドが不正です。
: 関数ポインタとして評価されない式を使って、関数を呼び出そうとしました。
VC++6.0でMFC AppWizardにてダイアログベースで新規作成したダイアログクラスに
以下のように追加しました。
ヘッダー追加
private:
void (CSampleDlg:: *pf[2][2])(void);
void test0101(void);
void test0102(void);
void test0201(void);
void test0202(void);
ソース追加
BOOL CSampleDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// ウィンドウがダイアログでない時は自動的に設定しません。
SetIcon(m_hIcon, TRUE); // 大きいアイコンを設定
SetIcon(m_hIcon, FALSE); // 小さいアイコンを設定
// TODO: 特別な初期化を行う時はこの場所に追加してください。
//↓追加
pf[0][0] = test0101;
pf[0][1] = test0102;
pf[1][0] = test0201;
pf[1][1] = test0202;
(*pf[0][0])(); //←ここでエラーが出ます。
//↑以上
return TRUE;
}
//↓追加
void CSampleDlg::test0101(){}
void CSampleDlg::test0102(){}
void CSampleDlg::test0201(){}
void CSampleDlg::test0202(){}
//↑以上
よろしくお願いします。
メンバ関数の呼び出しは対象となるオブジェクトを必要とします。
なので、
(this->*pf[0][0])();
とします。
どうもありがとうございます。
初めて知りました。まだまだ勉強不足ですね。
ほかのページでは関数ポインタ用のテンプレートを作成していたので
とても難しく考えていました。
これからもなにかあればよろしくお願いします。