【发布时间】:2014-02-11 17:27:14
【问题描述】:
我为图表创建了 vertex 和 Edge 课程,但我不明白为什么 Edge 的方法 GetVer1() 和 GetVer2() 不起作用!我需要为我的项目使用指向顶点的指针。有人可以帮我吗?
Vertex代码:
typedef class vertex *Vertex;
class vertex {
private:
int Key;
list<Vertex> Adj;
public:
vertex() {}
vertex(int k) { Key = k }
~vertex() {}
void AddAdj(Vertex);
int GetKey();
};
void vertex::AddAdj(Vertex v)
{
Adj.push_back(v);
}
int vertex::GetKey()
{
return Key;
}
Edge代码:
class Edge {
private:
Vertex V1;
Vertex V2;
public:
Edge() {}
~Edge() {}
Edge(Vertex, Vertex);
Vertex GetVer1();
Vertex GetVer2();
};
Edge::Edge(Vertex a, Vertex b)
{
V1 = a;
V2 = b;
}
Vertex Edge::GetVer1()
{
return V1;
}
Vertex Edge::GetVer2()
{
return V2;
}
Main代码:
int main()
{
Vertex a(1);
Vertex b(2);
Edge e(a,b);
Vertex v1 = e.GetVer1();
cout << v1->GetKey(); //it doesn't work!
return 0;
}
【问题讨论】:
-
它们到底是如何不起作用的?你期待什么结果,你得到了什么结果?请在您的问题中包含此信息。
-
您没有定义 v1。
Vertex v1 = e.GetVer1(); -
它简直崩溃了!是的,我定义了 v1,我只是忘了复制它。
-
崩溃时的错误信息究竟是什么。您是否使用调试器来确定崩溃的位置?
-
typedef class vertex *Vertex;充其量是令人困惑的,最坏的情况是等待发生的灾难。
标签: c++ data-structures graph