0945ppp6665.va-east.my-users.ne.jp
2005/10/08(土) 05:25:05ID:gl1dqDI80【板名*】PC等->プログラム
【スレ名*】C++相談室 part44
【スレのURL*】http://pc8.2ch.net/test/read.cgi/tech/1128512737/l5
【名前欄】
【メール欄】
【本文*】↓
名前を指定すると対応する関数を呼び出すようなものをクラス化しようとしているのですが、うまくコンパイルできません。どう書けばよいのでしょうか?
ちなみにコンパイラはBCC++5.5です。以下のソースでは「クラスメンバーを初期化できない」というエラーになりました。
名前から関数への変換に、テーブルを使わずにif()の連続攻撃なら、コンパイルできますが、あまりに愚かしいので・・・
#include <string.h>
class X{
public:
void FuncA(void);
void FuncB(void);
typedef struct tagNAMETOFUNC{
char* Name;
void (*Func)(void);
} NAMETOFUNC;
NAMETOFUNC NameToFunc[] = {
{"FuncA", FuncA},
{"FuncB", FuncB},
};
void Select(char *Name){
int i;
for (i = 0; i <= 1; i ++){
if (strcmp(Name, NameToFunc[i].Name) == 0){
NameToFunc[i].Func();
return;
}
}
}
};