添加更多细节
我希望注入一个类型并使用它作为模板类型,除此之外,我还想隐式地传递一个要使用的子类型。
执行情况:
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;
};发布于 2017-05-02 23:19:14
我可能不完全理解这个问题,但看来如果你改变了
SubTypeImpl SubType;至
typedef SubTypeImpl SubType;你可以实现你想要的。
发布于 2017-05-02 23:09:53
T::SubType不是一个类型,它是一个成员字段。
template<class T>
using SubType = decltype(std::declval<T&>().SubType);它获取SubType成员的T类型,假设它是公共的。
template<class T>
class MyClass {
public:
T m_typeObject;
SubType<T> m_subTypeObject;
};您可以在decltype定义中执行MyClass内联操作,但这很麻烦。
https://stackoverflow.com/questions/43748046
复制相似问题