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;
};
给我排错:std::vector< Edge > adjVertices;
error: error C2143: syntax error : missing ';' before '<'
请参阅正在编译的类模板实例化'ds::Vertex<T>'
的引用。
我应该改变什么?
答案 0 :(得分:3)
你必须
#include <vector>
并更改
std::vector<Edge> adjVertices;
到
std::vector<Edge<T>> adjVertices;
同样适用于:
Vertex<T>* source;
Vertex<T>* target;
接下来,您将面临在Vertex
之前定义Edge
的问题。你应该改变订单。
答案 1 :(得分:1)
编译:
#include <vector>
template <class T>
class Edge;
template <class T>
class Vertex;
template <class T>
class Vertex
{
T key;
char color;
std::vector<Edge <T> > adjVertices;
};
template <class T>
class Edge
{
Vertex <int> * source;
Vertex <int> * target;
};