私はこのようなことをしたい...
class A;
class B;
class C;
void a(A);
void b(B);
void c(C);
template<typename T> void f(T t)
{
if (some condition)
a(t)
else if (some other condition)
b(t)
else
c(t);
}
int main()
{
A myA;
B myB;
C myC;
f(myA); // some condition ensures f(myA) only calls a(myA)
f(myB); // some condition ensures f(myB) only calls b(myB)
f(myC); // some condition ensures f(myC) only calls c(myC)
return 0;
}
ただし、a(B)、a(C)、b(A)、b(C)、c(A)、c(B) が定義されていないため、これはコンパイルされません。
これを解決する方法はありますか?std::function() または std::bind() を使用して a()、b()、または c() の呼び出しを動的に構築できるかどうかを確認しようとしましたが、うまくいきませんでした。