C++ クラス テンプレートがあります。テンプレート パラメーター クラス T を取り、型 T のオブジェクトを、data() というメソッドを介してアクセス可能なプライベート メンバーとして格納します。以下のコードはそれを示しています。クラス テンプレートで、型 T を考慮した便利なコンストラクターを提供したいと考えています。たとえば、T のフィールドの一部をパラメーターとして受け取り、カプセル化された T オブジェクトをその値で初期化するコンストラクターです。
これを行う 1 つの方法は、ユーザーにテンプレートのインスタンス化から派生させ、そこに独自のコンストラクターを追加させることですが、当然のことながら、ユーザーに派生クラスを作成させずに ctor を提供する方法を用意したいと思います。
template <class T>
class Templ
{
public:
T& data();
const T& data() const;
private:
T obj;
};
ユーザーが便利なコンストラクターを必要とする場合、Templ を派生させる必要があります。
class MyClass : public Templ<MyData>
{
public:
MyClass (int size, MyClass* parent, float temperature, std::string name);
};
私はいくつかのC++ 11のものを読んで、STLのようなコンストラクターテンプレートを持つことについてのアイデアを持っていました std::list::emplace() メソッドのセットがありますが、一般的なベストプラクティスのソリューションが何であるかはわかりません.