C++ VERTEX und EDGE-Klassen funktionieren nicht

Machte ich die Klasse vertex und Edge für ein Diagramm, aber ich verstehe nicht, warum die Edge's Methoden GetVer1() und GetVer2() funktionieren nicht! Ich muss arbeiten mit dem Zeiger auf die Eckpunkte für mein Projekt. Könnte mir jemand helfen?

Vertex code:

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 code:

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 code:

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;
}
  • Wie genau arbeiten Sie nicht? Welche Ergebnisse konnten Sie erwarten, und welche Ergebnisse haben Sie erhalten? Bitte geben Sie diese Informationen in Ihre Frage.
  • Sie sind nicht die Definition v1. Vertex v1 = e.GetVer1();
  • Es einfach abstürzt! Ja ich v1, die ich nur vergessen zu kopieren.
  • Was genau ist die Fehlermeldung, wenn es abstürzt. Haben Sie einen debugger, um festzustellen, wo es abstürzt?
  • typedef class vertex *Vertex; ist im besten Fall verwirrend und im schlimmsten Fall eine Katastrophe warten, um zu geschehen.
InformationsquelleAutor Maghio | 2014-02-11
Schreibe einen Kommentar