Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/143.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Can a C++;容器是否包含模板对象?获取错误_C++_Templates - Fatal编程技术网

C++ Can a C++;容器是否包含模板对象?获取错误

C++ Can a C++;容器是否包含模板对象?获取错误,c++,templates,C++,Templates,我得到以下错误: 非专用类模板不能用作模板参数“_Kty”的模板参数,应为实类型 我试图编译的代码如下所示: template <typename T> class TypeX; template <typename T> class TypeY { ... private: std::set<TypeX> m_tree; } 模板类TypeX; 模板 类类型 { ... 私人: std::设置m_树; } 顺便说一句,包括“TypeX

我得到以下错误: 非专用类模板不能用作模板参数“_Kty”的模板参数,应为实类型

我试图编译的代码如下所示:

template <typename T> class TypeX;

template <typename T>
class TypeY
{

...
    private:
    std::set<TypeX> m_tree;
}
模板类TypeX;
模板
类类型
{
...
私人:
std::设置m_树;
}
顺便说一句,包括“TypeX.h”(这是一个模板类)而不是forward声明不会改变任何东西

我从这个错误中得到的信息是,由于TypeX是“非专业化的”——即“T”没有定义,TypeX仍然是模板形式,所以它不能作为std::set的基础。但是我真的希望TypeX是T的模板,这样我就可以在TypeY中初始化一个新的TypeX(T的模板),然后将这个新对象插入到m_树中


这能做到吗?谢谢大家。

TypeX
需要一个模板参数。创建
std::set

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

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

TypeX
需要模板参数。创建
std::set

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

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

我不在C++标准的最新版本上,但早期版本是否需要用两个代码之间的空格写“<代码> > s?@ JWODDED,以防万一。太棒了,谢谢凯撒。这解决了那个问题。下面是两个后续问题。(因为我不能在这里插入新的代码)我不在最新版本的C++标准上,但是早期版本需要这两个代码之间的空格写在“<代码> > /代码> s?@ jWoddID,以防万一。太棒了,谢谢凯撒。这解决了那个问题。下面是两个后续问题。(因为我无法在此处插入新行)