3
メンバ関数をテンプレート引数として使用する場合、Caller
型を指定せずにテンプレート化する方法がありますか?メンバ関数ポインタをテンプレート引数として使用する場合の除算型
struct Foo
{
template <typename Caller, void (Caller::*Func)(int)>
void call(Caller * c) { (c->*Func)(6); }
};
struct Bar
{
void start()
{
Foo f;
f.call<Bar, &Bar::printNumber>(this);
^^^^
}
void printNumber(int i) { std::cout << i; }
};
int main()
{
Bar b;
b.start();
return 0;
}
私は
template <void (Caller::*Func)(int), typename Caller>
void call(Caller * c) { (c->*Func)(6); }
を試してみて、私はCaller is not class...
エラーを取得しています
f.call<&Bar::printNumber>(this);
のようにそれを呼び出します。
したがって、コンパイラに呼び出し元のタイプを推測させる方法はありますか?
ありがとうございました!なぜ私は定期的なパラメータの代わりにそれをテンプル化しようとしたのかわからない:)もう一度ありがとう – relaxxx