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?
};