我相信之前已经提出过这个问题.我试着寻找它但仍然无法弄清楚问题.我非常感谢能在这里得到任何帮助.谢谢
我收到以下错误.一旦我调用Edge的构造函数,我就知道我没有初始化Vertex.但我似乎无法弄清楚如何.
10369.cpp: In constructor ‘Edge::Edge(Vertex, Vertex)’:
10369.cpp:34: error: no matching function for call to ‘Vertex::Vertex()’
10369.cpp:30: note: candidates are: Vertex::Vertex(int, int)
10369.cpp:6: note: Vertex::Vertex(const Vertex&)
10369.cpp:34: error: no matching function for call to ‘Vertex::Vertex()’
10369.cpp:30: note: candidates are: Vertex::Vertex(int, int)
10369.cpp:6: note: Vertex::Vertex(const Vertex&)
#include <iostream>
#include <math.h>
using namespace std;
//Vertex in a graph, with x & y coordinates
class Vertex{
int x , y;
public:
Vertex(int, int);
~Vertex();
int GetX() {return x;};
int GetY() {return y;};
};
// Edge of a graph calculated from two vertices
class Edge{
Vertex U , V;
float edge_weight;
public:
Edge(Vertex , Vertex);
~Edge();
float GetEdgeWeight() { return edge_weight; }
};
Vertex::Vertex(int _x , int _y){
x = _x;
y = _y;
}
// The edge weight is calculated using the pythagoras
Edge::Edge(Vertex _U , Vertex _V){
U = _U;
V = _V;
int x = V.GetY() - U.GetY();
int y = V.GetX() - U.GetX();
edge_weight = sqrt(pow(x,2) + pow(y,2));
}
int main (int argc , char *argv[]){
Vertex V1(0,1) ;
Vertex V2(0,3);
Edge E(V1, V2);
float x = E.GetEdgeWeight();
cout << x << endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
始终使用构造函数初始化列表来初始化数据成员 - 您Vertex没有默认构造函数,这是绝对必须使用init列表的情况之一.
Edge::Edge(Vertex U, Vertex V) : U(U), V(V), edge_weight(...) { }
Vertex::Vertex(int x, int y) : x(x), y(y) { }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
974 次 |
| 最近记录: |