ためは、私は、今、私は基本クラスとしてテンプレートクラスを持つテンプレートクラスのテンプレートの種類
template<class TKey, class TValue>
class BaseKeyValueData
{ ... }
以下のように宣言をパラメータを追加することができます。また、私は、上記の基本クラスで処理鍵とTValueを置き換えるためにターゲット要素のクラスをdeclara
class BasicElement
{
BasicElement() = default;
BasicElement (const std::string& input) { ... }
}
それから私はBaseKeyValueDataから派生クラスを作成し、またBasicElementで処理鍵を交換するが、それでも派生クラスのテンプレート引数としてTValueを残したいです。宣言は以下の通りです
template <class T>
class DeriveValueClass() : BaseKeyValueData<BasicElement, T>
{
DeriveValueClass() : BaseKeyValueData<BasicElement, T>() {}
...
}
上記のコードは私が実装しています。しかし、新しい要件に応じて、BasicElementインスタンスを初期化するために文字列パラメータを使用したいと考えています。上記のDeriveValueClassクラスでは、デフォルトのコンストラクタはBasicElementのデフォルトのコンストラクタ(パラメータなし)を使用します。では、DeriveValueClassコンストラクタでBasicElementを初期化するためにパラメータを使用する方法を教えてください。以下のようなダミーコード:
DeriveValueClass() : BaseKeyValueData<BasicElement(<parameterForBasicElement>), T>() {}
上記のコードはC++では無効です。これをどのように実装できますか?
ありがとうございます!
あなたの質問は不明です。重要なコンストラクタは 'BaseKeyValueData'です。これは 'DeriveValueClass'が継承するものです。 'BasicElement'から継承しないので、それを構築する必要はありません。これは明らかにあなたがコンパイルしようとしている実際のコードではなく、偽のクラス名を使って偽のコードです。残念ながら、偽のコードについて尋ねる唯一のことは偽の回答です。本当の答えが必要な場合は、実際のコンパイルエラーを生成する実際のコードを投稿する必要があります。 –
@SamVarshavchik、実際にあなたのコミットが私の考えを引き起こします。私はそれで答えを見つける。本当にありがとう!私は実際に型宣言とオブジェクトの初期化を混同します。私の質問では、テンプレートクラスの型宣言のコードを記載します。実際には、私は最初の私のcppファイルの型、それは私がコンストラクタのパラメータを転送する必要があると思う場所です。 – newcarcrazy