※ ChatGPTを利用し、要約された質問です(原文:bccでエラー:メンバー関数は呼び出すかそのアドレスを~)
bccでエラー:メンバー関数は呼び出すかそのアドレスを~
bccでエラー:メンバー関数は呼び出すかそのアドレスを~
クラスのメンバ関数を、ある関数(実は qsort)の引数として渡したい
と思っています。環境は
OS:Windows XP
コンパイラ:C++Builder6 に付属の bcc32.exe
です。
下記のコード(t.cpp)をコマンドプロンプトで
bcc32 t
としてコンパイルすると「※1」の行で下のエラーになります。
「エラー E2235 t.cpp 29: メンバー関数は呼び出すか
そのアドレスをとらなければならない(関数 main() )」
どのように直せば良いでしょうか?
--------------------------------------------------------
#include <stdio.h>
#include <stdlib.h>
class Aclass {
public:
void f(int);
};
void Aclass::f(int x)
{
printf("classfunc %d\n", x);
}
void sub1(int x)
{
printf("sub-1 %d\n", x);
}
void call_func(void(*func)(int), int x)
{
func(2*x + 1);
}
void main(void)
{
call_func((void(*)(int))sub1, 11);
Aclass *a = new Aclass;
call_func((void(*)(int))a->f, -7); //※1
delete a;
}
--------------------------------------------------------
この掲示板、行頭の空白が削除されてしまいますねー。
補足
void f(int); を static void f(int); に変更したら、コンパイルできました。 ありがとうございました。