は、これに加えて、私は暗黙的になるようにサブタイプを渡したいと思い、私はタイプに注入し、テンプレートの種類としてこれを使用しているよC++ 11のテンプレートのサブタイプ
を追加しました中古。
実装:
MyClass<MyTestClass> myClass;
const auto& testDataReturn = myClass.m_typeObject.m_field1;
// looking to be able to call myClass.m_subTypeObject here which is implicitly typed from the parent type (see template def below)
テンプレート:
template<class T>
class MyClass
{
public:
T m_typeObject;
typename T::SubType m_subTypeObject; // **does not like this**
};
typedef MyType SubType;
クラス定義:
class SubTypeImpl
{
public:
std::string m_field1 = "test1Sub";
std::string m_field2 = "test2Sub";
};
class MyTestClass
{
public:
std::string m_field1 = "test1";
SubTypeImpl SubType;
};
[mcve]のような文脈を提供してください。私はあなたがあなたが尋ねていることを理解しているようなものを見て、やったと思うが、私は確信していない。エラーの原因となる行を(コメント構文を使用して)無効にすることによって、mcveをコンパイル可能にすることができます。コンパイル可能なコンパイル可能なバージョンで他の人がプレイするのは簡単です。擬似コードによる散文やコメントも役立ちます。 – Yunnosch
あなたのMyClassの定義は、少なくともコンパイルされ、妥当に見えます。しかし、私はあなたが実際に達成しようとしていることを知らない。 – rincewind