Zugiff auf die Daten eines privaten Stucts?
-
Hi,
ich habe folgendes:class MyClass{ private NameMeinesStruct *MyStruct; //muss ich das so deklarieren? //vieles anderes } int main() { MyClass foo; //... foo.MyStruct.TolleDaten = mehrTolleDaten; }Also kann ich auf die Daten eines privaten struct direkt zugreifen oder ist das dann auch privat? Ich möchte nämlich direkten Zugriff auf die Daten in einem struct, aber nicht auf das struct, sprich die Adresse selbst haben. Kann ich das so realisieren und wenn nein wie dann?
Danke!
P.S: Oder für alle die es Interessiert bzw. die vielleicht eine bessere Idee haben: letztendlich will ich eine verkettete Liste habe, die ich in jedem Projekt einbinden kann und direkt, ein entsprechendes struct mit passendem Namen im Projekt vorausgesetzt verwenden kann.
-
Pille456 schrieb:
Hi,
ich habe folgendes:class MyClass{ private NameMeinesStruct *MyStruct; //muss ich das so deklarieren? -> Nein. // sondern so: private: // <-- Doppelpunkt! Zeilenabstand ist unwichtig, aber übersichtlihcer NameMeinesStruct *MyStruct; }; // <-- Strichpunkt! int main() { MyClass foo; //... foo.MyStruct.TolleDaten = mehrTolleDaten; // nicht, wenn MyStruct privat ist. // sowieso operator-> verwenden, wegen Zeiger foo.MyStruct->TolleDaten = mehrTolleDaten; // wenn es public wäre }Member, die in einer Klasse privat sind, können nicht von ausserhalb der Klasse verwendet werden - egal, ob der Member ein
int, einconst long doubleoder eine selbst definierte Struktur ist. Sonst müsstest du den Memberpublicmachen.Was dein Problem mit der verketteten Liste angeht: Ich würd dir zu dem STL-Container
std::list<>raten, dann kannst du dir erstens die eigene Implementierung sparen, kannst zweitens schneller und drittens sicherer (keine Angst um Speicherverwaltung) arbeiten.
-
Hmm ja klar ist das einfacher, aber das Ziel momentan ist es nicht irgendein Programm fristgerecht oder sonst wie zu programmieren, sondern solche Implemantationen mal selber zu versuchen, zu sehen wie das mal geht und so.
Naja mit der struct hatte ich das schon geahnt, aber wollte auf Nummer sicher gehen.
-
Du kannst einen getter machen der diesen Pointer auf diese Struct zurück gibt, dann kann man die Daten der Struktur ändern, aber nicht den internen Pointer in der Klasse, weil bei nem einfachen Returnwert immer ne Kopie erzeugt wird.
-
schöner wäre natürlich ein iterator nach STL vorbild.
-
Pille456 schrieb:
Hmm ja klar ist das einfacher, aber das Ziel momentan ist es nicht irgendein Programm fristgerecht oder sonst wie zu programmieren, sondern solche Implemantationen mal selber zu versuchen, zu sehen wie das mal geht und so.
Okay, dann ist das natürlich gerechtfertigt

Das mit den Iteratoren würde ich aber am Anfang vielleicht noch weglassen. Versuch mal, einzelne Elemente an die Liste anzuhängen und zu entfernen, dann bist du schon ein rechtes Stück weiter. Mit der Zeit kannst du dann noch (Kopier-)Konstruktoren, Destruktoren, und überladene Zuweisungsoperatoren implementieren. Bei Problemen kannst du ungeniert fragen.PferdMitSki schrieb:
Du kannst einen getter machen der diesen Pointer auf diese Struct zurück gibt, dann kann man die Daten der Struktur ändern, aber nicht den internen Pointer in der Klasse, weil bei nem einfachen Returnwert immer ne Kopie erzeugt wird.
Für das kann man auch Referenzen verwenden
