我收到以下错误:
“非专业类模板不能用作模板参数'_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;