私は関数ポインタにマップ文字列を作成しようとしていますが、関数にはテンプレート引数があります。ここに私が試したものです:std :: map of string <->関数のテンプレート引数があるところ
template <typename T>
using func = void (*) (T);
std::map<std::string, func> funcMap;
funcMap["test1"] = &Test::test1;
funcMap["test2"] = &Test::test2;
テストは、次のようになります。
class Test
{
void test1(SomeClass arg) {}
void test2(SomeOtherClass arg) {}
};
は私が可能しようとしています何ですか?それについてもっと良い方法がありますか?ありがとう!
メンバ関数は通常の関数と同じではないので、これはうまくいかないでしょう。これを見てください:http://stackoverflow.com/questions/1924844/stdmap-of-member-function-pointers – NathanOliver
テンプレート引数を持つ関数はなく、テンプレートは型ではありません。マップ内のすべての値は同じ型でなければなりません。つまり、型は 'func'の同じインスタンスでなければなりません。 – molbdnilo
これは何のために使用していますか?私たちがあなたが何をしようとしているのか分からない限り、「それについてもっと良い方法があるか」を判断することはできません。 "文字列とテンプレート関数の間のマップが必要です"と答えるのは避けてください。これは必須ではありませんが、別の問題を解決しようとしています*(実際に根本的な問題があると仮定します) – Yakk