VC++にて、外部にから既定の書式のテキストファイルを読み込み実行する関数とその関数の引数を指定する。ということを実現したいのですが、関数については関数名の文字列と関数ポインタをmap<string, func>
で紐付け呼び出す方針で実装を行っているのですが変数では型も一定ではないので同じやり方はできなさそうです。
現在の考えでは、引数は型、数とも不定なのでテキストに「;」区切りで変数名を記載し、コード内で分割、それぞれの文字列と変数名がイコールになるものを返す。という流れで考えていますが実装方法がさっぱりです。。。
以下テキストファイルの書式です。
Func_Count=1 //実行するfuncの数 Func1="function1" //関数名 Argment1="aaa;bbb" //func1の引数
テキストの読み込みはapiが提供されているのでダブルクォーとの間の文字列が取得できるようになっています。
不足情報等ありましたら追記いたします。
###現在の実装
main.h
1... 2typedef int(*function)(std::string* arg); 3std:map<std:string, function> map; 4 5static void func1(std::string* arg) 6static void func2(std::string* arg) 7static void func3(std::string* arg) 8...
main.cpp
1void main(){ 2 int count; 3 function funcptr[10]; 4 std:string func_name,arg; 5 6 map_init(); 7 8 //テキストの読み込み処理を行う 9 10 for(int i=0; i<count; i++){ 11 //("Func%d",i)の読み込み 12 //("Argument%d",i)の読み込み 13 (map[func_name])(&arg) 14 } 15} 16 17viod map_init(){ 18 map["func1"]=&func1; 19 map["func2"]=&func2; 20 map["func3"]=&func3; 21} 22 23void func1(std::string* arg){ 24 //処理 25} 26
###実現したいこと
書いていて自分でもわからなくなってきましたが、
やりたいことはソースコードに手を加えることなく実行する関数を変更するということです。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。