1

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

这可以做到吗?多谢你们。

4

1 回答 1

5

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

您可以将代码更改为更像这样的内容

std::set< TypeX<T> > m_tree;
于 2013-10-17T01:29:47.413 回答