Klasse in Klasse ansprechen
-
Hi,
ich habe folgende Klasse DiGraph gegeben:
template <class TV, int maxNodes> class Digraph { private: class Vertex { public: Vertex() { // Konstruktor indegree = outdegree = ord = 0; visited = living = false; value = 0; } TV value; // Markierung int indegree; // Eingangsgrad int outdegree; // Ausgangsgrad int ord; // Ordnungszahl des Knotens bool visited; // Knoten-"besucht"-Marke bool living; // Knoten existiert }; double noArc; int numvertices; // Anzahl der Knoten eines Digraphen int numarcs; // Anzahl der Kanten eines Digraphen Vertex vertex[maxNodes]; // repräsentiert Knoten des Digraphen double arc[maxNodes][maxNodes]; // repräsentiert bewertete Kanten des Digraphen (-1=keine Kante) ARC = EDGE public: Digraph():noArc(-1.0) // Digraphen generieren { for (int i=0;i<maxNodes;i++) //Adajenz-Matrix füllen for (int y=0;y<maxNodes;y++) arc[i][y]=noArc; } /*~Digraph() // Digraphen freigeben { }*/ void InsertVertex (int n, TV m) // fügt neuen Knoten n mit Markierung m ein { } .......Wie kann ich nun in der MEthode InsertVertex die Attributte aus der Klasse Vertex setzen bzw. die einzelnen Objekte in "Vertex vertex[maxNodes];" ändern?
-
Krikus schrieb:
Wie kann ich nun in der MEthode InsertVertex die Attributte aus der Klasse Vertex setzen bzw. die einzelnen Objekte in "Vertex vertex[maxNodes];" ändern?
In dem du über den Memberzugriff darauf zugreifst? Wie bei jeder anderen Klasse auch. Hast du es denn überhaupt probiert?
Grüssli
-
void InsertVertex (int n, TV m){ // fügt neuen Knoten n mit Markierung m ein vertex[n].value = m; }Sollte so funktionieren
Vertex vertex[maxNodes] ist ja die Adajenz-Matrix, die brauchste hier erst einmal noch nicht zu ändern. (Hast ja nur 2 Parameter, für Nummer und für Inhalt)