2 つのテンプレート引数を使用してテンプレート関数を呼び出す際に問題が発生しています。
クラスがあり、そのクラスは 2 つの異なる型のオブジェクトを受け入れます。型はまだわからないので、テンプレートパラメータとして残しました。次に、オブジェクトをラッパー クラスに格納します。最後に、2 つのオブジェクトを受け取る 2 つのテンプレート引数を使用して、テンプレート化された関数を呼び出せるようにしたいと考えています。しかし、私はこれを行う方法に困惑しています。
これは、私の問題を説明するためのコードの簡略版です。
template<typename A, typename B>
void someTemplateFunction(A a, B b);
class Problem
{
  private:
    class WrapperA
    {
      public:
        virtual void doSomething() = 0;
    };
    template<typename A>
    class ConcreteWrapperA : public wrapperA
    {
      private:
        A a;
      public:
        ConcreteWrapperB(A b_) : a(a_) {}
        virtual void doSomething();
    };
    class WrapperB
    {
      public:
        virtual void doSomething() = 0;
    };
    template<typename B>
    class ConcreteWrapperB : public wrapperB
    {
      private:
        B b;
      public:
        ConcreteWrapperB(B b_) : b(b_) {}
        virtual void doSomething();
    };
    WrapperA *a;
    WrapperB *b;
  public:
    template<typename A>
    void setA(A a)
    {
      a = new ConcreteWrapperA<A>(a);
    }
    template<typename B>
    void setB(B b)
    {
      a = new ConcreteWrapperB<B>(b);
    }
    void call_someTemplateFunction(); // ??????? How do i do this?
};