C++ 嵌套模板类中的C2143 模板 类边缘; 模板 类顶点; 模板 类顶点 { T键; 炭色; 向量顶点; }; 模板 阶级边缘 { 顶点*源; 顶点*目标; };
给我行中的错误:C++ 嵌套模板类中的C2143 模板 类边缘; 模板 类顶点; 模板 类顶点 { T键; 炭色; 向量顶点; }; 模板 阶级边缘 { 顶点*源; 顶点*目标; };,c++,templates,C++,Templates,给我行中的错误:std::vectoradjVertices 错误:错误C2143:语法错误:缺少“;”在你必须做的事之前 template <class T> class Edge; template <class T> class Vertex; template <class T> class Vertex { T key; char color; std::vector<Edge> adjVertices; };
std::vectoradjVertices代码>
错误:错误C2143:语法错误:缺少“;”在你必须做的事之前
template <class T>
class Edge;
template <class T>
class Vertex;
template <class T>
class Vertex
{
T key;
char color;
std::vector<Edge> adjVertices;
};
template <class T>
class Edge
{
Vertex* source;
Vertex* target;
};
#包括
改变
#include <vector>
std::向量顶点;
到
std::向量顶点;
这同样适用于:
std::vector<Edge<T>> adjVertices;
Vertex*源;
顶点*目标;
接下来,您将面临一个问题,顶点
是在边
之前定义的。你应该颠倒顺序。你必须
template <class T>
class Edge;
template <class T>
class Vertex;
template <class T>
class Vertex
{
T key;
char color;
std::vector<Edge> adjVertices;
};
template <class T>
class Edge
{
Vertex* source;
Vertex* target;
};
#包括
改变
#include <vector>
std::向量顶点;
到
std::向量顶点;
这同样适用于:
std::vector<Edge<T>> adjVertices;
Vertex*源;
顶点*目标;
接下来,您将面临一个问题,顶点
是在边
之前定义的。您应该颠倒顺序。这将编译:
Vertex<T>* source;
Vertex<T>* target;
#包括
模板
类边缘;
模板
类顶点;
模板
类顶点
{
T键;
炭色;
向量顶点;
};
模板
阶级边缘
{
顶点*源;
顶点*目标;
};
这将编译:
Vertex<T>* source;
Vertex<T>* target;
#包括
模板
类边缘;
模板
类顶点;
模板
类顶点
{
T键;
炭色;
向量顶点;
};
模板
阶级边缘
{
顶点*源;
顶点*目标;
};
+1同样,对于C++03,在>>之间应该有一个空格:std::vector adj顶点
@dark\u charlie:除非您的C++03编译器支持将其作为扩展。MSVS>=2005(OP的编译器)。@ YBangalbul:为什么不只是添加空间使其有效C++而不依赖于特定的编译工具?@ Tomalak:出于意识形态原因。它必须在C++98中有效,但一些供应商认为他们负担不起。@ybungalobill:我不这么认为。+1另外,对于C++03,在>>之间应该有一个空格:std::vector adj顶点
@dark\u charlie:除非您的C++03编译器支持将其作为扩展。MSVS>=2005(OP的编译器)。@ YBangalbul:为什么不只是添加空间使其有效C++而不依赖于特定的编译工具?@ Tomalak:出于意识形态原因。它必须在C++98中有效,但一些供应商认为他们负担不起。@ybungalobill:我不明白。