Wie kann ich eine Klasse kopieren?
-
Ich müsste nur wissen, was an der folgenden Zeiler falsch ist und wie sie richtig heißen sollte:
*(AZeigerListe[i]) = &(AKnotenListe[i]);
Knoten AKnotenListe[100] -> Array of 100 Knoten
Knoten (*AZeigerListe)[100] -> Array of 100 ZeigernViele Grüße
pmw
-
dEUs schrieb:
Lass einfach mal die Dereferenzierung (*) weg.
-
Leider geht AZeigerListe[i] = &(AKnotenListe[i]); genaun so wenig
-
Schau dir mal dies an:
int a[100]; int* b[100]; // <-- for (int i = 0; i < 100; i++) { a[i] = i; b[i] = new int; // <-- *b[i] = a[i]; // <-- std::cout << i << ": " << a[i] << " " << *b[i] << "\n"; }
Das musst du jetzt auf deine Knoten anpassen.
-
Danke für die Antwort. Jetzt laäuft zu mindest dieser Teil. Ich habe aber leider wieder ein Problem:
struct Knoten { bool Ende; Knoten *links; Knoten *rechts; long double Wahrscheinlichkeit; unsigned char Zeichen; unsigned short Laenge; bool Code[256]; };
Knoten AKnotenListe[100]; // Array of 100 Knoten Knoten *AZeigerListe[100]; //Array of 100 Zeigern for (unsigned short i=0; i<IAnzahlZeichen-1; ++i) { AKnotenListe[i].Ende = 0; AKnotenListe[i].Wahrscheinlichkeit = 0; AKnotenListe[i].links = NULL; AKnotenListe[i].rechts = NULL; } for (unsigned short i=0; i<100; ++i) { AZeigerListe[i] = new Knoten; *AZeigerListe[i] = AKnotenListe[i]; }
An folgender Stelle stürzt das Programm mit einem written-Error ab:
(*AZeigerListe[1]).Laenge = (*AZeigerListe[1]).Laenge + 1;
-
(*AZeigerListe[1]).Laenge += 1;
Edit: Mache deine Variablen doch private. Dann musst du zuätzlich über eine Methode zugreifen (z.B. set() und get())
#include <iostream> class A { private: int laenge; public: A() : laenge(1) {} inline int get() const { return laenge; } inline void set(int i) { laenge += i; } }; int main() { A a[100]; A* b[100]; for (int i = 0; i < 100; i++) { b[i] = new A; std::cout << i << ": " << a[i].get() << " " << (*b[i]).get() << "\n"; } (*b[1]).set(1); std::cout << (*b[1]).get(); }