gpt4 book ai didi

c++ - 如何将模板类添加为普通类中的成员

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

我有一个模板类:templClass,它接受一个类型并像常规模板类一样工作。我希望该类成为另一个常规类 regClass 的成员。regClass 有一个成员变量 var,我希望基于它创建 type1type2 的 templClass :所以是这样的

template <class T>
class templClass
{
//constructor
};

class regClass
{
public:
regClass()
{
// constructor for other members
}
int var;
templClass templClass_;
// if (var == 0)
// {I want templClass<type1>}
// else
// {I want templClass<type2>}
};

我怎样才能做到这一点?上面的实现抛出编译器错误 error: invalid use of template-name 'templClass' without an argument list

最佳答案

那是不可能的。

您必须使用类模板的显式实例化。例如

templClass<int> templClass_;

templClass<double> templClass_;

另一种选择是使 regClass 也是一个类模板,其中 var 是模板参数而不是成员变量。

template <int> struct MemberTypeSelector;
template <> struct MemberTypeSelector<0>
{
using type = templClass<int>;
};

template <> struct MemberTypeSelector<1>
{
using type = templClass<double>;
};

// Add more specializations of MemberTypeSelector as needed.

template <int var>
class regClass
{
public:

using MemberType = typename MemberTypeSelector<var>::type;
regClass()
{
// constructor for other members
}

MemberType member;
};

关于c++ - 如何将模板类添加为普通类中的成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57979436/

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