gpt4 book ai didi

C++ 11 模板子类型

转载 作者:行者123 更新时间:2023-11-30 02:25:45 25 4
gpt4 key购买 nike

添加了更多细节

我希望注入(inject)一个类型并将其用作模板类型,除此之外我想隐式传递一个要使用的子类型。

实现:

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;
};

最佳答案

T::SubType 不是类型,它是成员字段。

template<class T>
using SubType = decltype(std::declval<T&>().SubType);

获取 TSubType 成员的类型,假设它是公共(public)的。

template<class T>
class MyClass {
public:

T m_typeObject;
SubType<T> m_subTypeObject;
};

您可以在 MyClass 定义中内联 decltype,但这很麻烦。

关于C++ 11 模板子类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43748046/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com