gpt4 book ai didi

c++ - 如何使用受限模板?

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

假设我正在使用以下类:

template<class I, class O>
class TE {...}; //This is an abstract class

template<class I, class O>
class TESO: public TE {...};

template<class I, class O>
class TEMO: public TE {...};

现在我想创建一个新类TQ,它应该像这样初始化:

TQ<int,bool, TESO<int,bool>> tq1;
TQ<int,bool, TEMO<int,bool>> tq2;

而且我不确定编写 TQ 类的正确方法是什么。

我在想这个:

template<class I, class O, TE<I,O>>
class TQ {
private:
std::vector< TE<I,O> > TEs;
public:
...
};

但我不完全确定,因为我有以下编译错误:

template<class I, class O, TE<I,O>>
inline std::ostream& operator<<(std::ostream& os, const TE<I,O>& tq) {
os << ":" << std::endl;
return os;
}

最佳答案

您可能需要制作 TE<I,O>类的模板参数 TQ一个"template template parameter" .

如下:

template<class I, class O, template <typename, typename> class TE>

这允许模板类 TE在你的模板类中使用 TQ作为模板;也就是说,它允许您像那里一样编写代码 TE<I,O>std::vector< TE<I,O> > TEs;而不仅仅是 std::vector< TE > TEs; (见下文)。

或者,如果 TE 中使用的类型并且没有特别要求与 TQ 中使用的相同, 然后一个简单的第三个参数;

template<class I, class O, class TE>

关于c++ - 如何使用受限模板?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25972420/

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