编码图形 class 时出现此错误是什么意思?
What does this error when coding a graph class mean?
我有一个不完整的图表,其中有很多功能尚未实现。
这是相邻列表的图表。它有顶点和边。我收到一个我无法理解的错误。您能解释一下错误是如何产生的吗?错误是
C:\Users\jialee\Documents\CodeBlocks\ShortestPath\Graph.cpp: In
constructor 'Edge::Edge(Vertex, Weight)':
C:\Users\jialee\Documents\CodeBlocks\ShortestPath\Graph.cpp:34:33:
error: no matching function for call to 'Vertex::Vertex()'
密码是
#include <forward_list>
#include <string>
using namespace std;
const int MAX_SIZE = 10000;
typedef int Weight;
class Vertex {
public:
Vertex(string name, int num);
string city_name;
int city_num;
};
class Edge{
public:
Edge(Vertex v, Weight w);
Vertex associated_vertex;
Weight weight;
};
class Graph{
public:
Graph(int size);
};
Vertex::Vertex(string name, int num){
city_name = name;
city_num = num;
}
Edge::Edge(Vertex v, Weight cost){
associated_vertex = v;
weight = cost;
}
Graph::Graph(int size = MAX_SIZE){
forward_list<Edge> G[size];
}
该错误表明您缺少 Vertex 的默认构造函数(不带参数的构造函数),这在边的构造过程中是必需的。
基本上,您的边缘构造函数尝试首先默认初始化所有成员,然后分配传递的值。
您可以将默认构造函数添加到顶点 class 或(更好)在边构造函数中使用初始化列表:
Edge::Edge(Vertex v, Weight cost):
associated_vertex{v},
weight{cost}
{ }
我有一个不完整的图表,其中有很多功能尚未实现。
这是相邻列表的图表。它有顶点和边。我收到一个我无法理解的错误。您能解释一下错误是如何产生的吗?错误是
C:\Users\jialee\Documents\CodeBlocks\ShortestPath\Graph.cpp: In constructor 'Edge::Edge(Vertex, Weight)': C:\Users\jialee\Documents\CodeBlocks\ShortestPath\Graph.cpp:34:33: error: no matching function for call to 'Vertex::Vertex()'
密码是
#include <forward_list>
#include <string>
using namespace std;
const int MAX_SIZE = 10000;
typedef int Weight;
class Vertex {
public:
Vertex(string name, int num);
string city_name;
int city_num;
};
class Edge{
public:
Edge(Vertex v, Weight w);
Vertex associated_vertex;
Weight weight;
};
class Graph{
public:
Graph(int size);
};
Vertex::Vertex(string name, int num){
city_name = name;
city_num = num;
}
Edge::Edge(Vertex v, Weight cost){
associated_vertex = v;
weight = cost;
}
Graph::Graph(int size = MAX_SIZE){
forward_list<Edge> G[size];
}
该错误表明您缺少 Vertex 的默认构造函数(不带参数的构造函数),这在边的构造过程中是必需的。
基本上,您的边缘构造函数尝试首先默认初始化所有成员,然后分配传递的值。
您可以将默认构造函数添加到顶点 class 或(更好)在边构造函数中使用初始化列表:
Edge::Edge(Vertex v, Weight cost):
associated_vertex{v},
weight{cost}
{ }