以前に他の人がこの設計の問題に遭遇したと思うので、誰かが私に何をすべきかについてアドバイスをくれることを願っています:私はプライベートジェネリックオブジェクトを保持することになっているクラスを持っています。私の知る限り、クラス全体をテンプレートにしないと逃げられません。大丈夫。しかし今、明示的に指定せずに、コンストラクターパラメーターから構築中に基になるオブジェクトのタイプを推測する方法はありますか(クラスDerived
をインスタンス化するときにテンプレートパラメーターを省略したい):Test
#include <iostream>
template <typename T>
class Generic
{
};
class Derived : public Generic<int>
{
public:
Derived ();
int GetFoo ();
private:
int m_foo;
};
template <typename T>
class Test
{
public:
Test (T &underlying);
private:
T m_underlying;
};
Derived::Derived ()
{
this->m_foo = 666;
}
int Derived::GetFoo ()
{
return this->m_foo;
}
template<typename T>
Test<T>::Test (T &underlying) : m_underlying(underlying)
{
std::cout << this->m_underlying.GetFoo() << std::endl;
}
int main ()
{
Derived underlying;
Test<Derived> test(underlying);
return 0;
}
目標を達成するために知っておくべき他の設計戦略はありますか?