public/private - Kein Zugriff
-
Hallo zusammen,
ich möchte einen Wert von einer Form in die andere übergeben.
Schon oft umgesetzt, möchte jetzt aber wissen, ob ich das so richtig mache.Im aktuellen Fall soll der Wert von einem Kalender in eine Datagridzelle geschrieben werden, dafür schrieb ich:
kalender^ dlg = gcnew kalender; dlg->ShowDialog(); this->dataGridView1->CurrentCell->Value = dlg->dateTimePicker1->Value;
Jetzt bekomme ich die Fehlermeldung:
error C2248: "GasVerbrauch::kalender::dateTimePicker1": Kein Zugriff auf private Member, dessen Deklaration in der GasVerbrauch::kalender-Klasse erfolgte.
Bisher ging ich einfach her und setzte die Deklaration auf public, also in der kalender.h von:
private: System::Windows::Forms::DateTimePicker^ dateTimePicker1;
in:
public: System::Windows::Forms::DateTimePicker^ dateTimePicker1;
Das funklioniert sehr gut. Mache ich das denn so richitg oder muss ich aus Sicherheitsgründen einen anderen Weg wählen?
Hintergrund: Ich lese immer public ist BÖSE.
LG Uwe
-
Du könntest eine read-only
property
machen um den Wert auszulesen (das wäre der saubere, empfehlenswerte Weg), oder anstelle vonprivate
oderpublic
internal
als access modifier setzen (weniger sauber, aber immernoch besser als alles public zu machen ;))MfG
-
Vielen Dank für die Info.
Könntest Du mir noch verraten, wie ich read-only property machen muss?
public internal funktioniert nicht, Fehler:
Fehler 1 error C3418: Der Zugriffsspezifizierer "public internal:" wird nicht unterstützt.
Liegt das vielleicht an der VC++ Express Version?
Edit: OK, nur internal: benutzen, das geht.
Es geht auch: public protected:. Wie sieht es damit aus?
-
Es gibt Tutorials zum Thema
property
internal
undpublic protected
werden in der Dokumentation beide praktisch nie erwähnt. Weshalb, weiss ich auch nicht. Wenn du es auf die saubere Art und Weise machen willst, dann benutze read-only Eigenschaften^^
-
Lieben Dank, das hilft weiter.
LG Uwe