我收到以下错误:
“非专业类模板不能用作模板参数'_Kty'的模板参数,应该是实型”

我试图编译的代码是这样的:

template <typename T> class TypeX;

template <typename T>
class TypeY
{

...
    private:
    std::set<TypeX> m_tree;
}

顺便说一句,包括“TypeX.h”(这是模板类)而不是前向声明,不会更改任何内容。

我从此错误中收集的信息是,由于TypeX是“未特化的”-从某种意义上说,“T”未定义且TypeX仍为模板形式,因此它不能成为std::set的基础。但是我真的希望TypeX也是T的模板,这样我就可以从TypeY内初始化一个新的TypeX(T的模板),然后将该新对象插入m_tree。

能做到吗?谢谢你们。

最佳答案

TypeX需要模板参数。创建std::set时您没有给它一个

您可以将代码更改为更多类似的内容

std::set< TypeX<T> > m_tree;

10-04 12:57