Zugriff auf Stucture von zwei Klassen aus
-
Hallo Community,
ich hab ein Problem beim Zugriff auf ein Member einer "untergeordneten" Klasse. Die Struktur ist in etwas so:
Ich habe Klasse A und in der Header von A erzeuge ich Klasse B. In Klasse B erzeuge ich mir dann deine private Struktur, auf die ich dann auch von Klasse A aus zugreifen will. Mit dem genutzten Bezeichner für die Struktur aus Klasse B in Klasse A bekomme ich folgen Fehler: "identifier is undefined "
Wie mache ich einen sauberen Zugriff auf die Struktur von beiden Klassen auf?
Ach ja und die Struktur-Initialisierung sollte schon in B stattfinden.
Grüße
-
Poste bitte mal den Code von A und B.
-
Class A (Header):
#include b.h class A{ ... private: void set_state(int value); ... B tB; ... }Class A (cpp):
#include a.h ... A * A::mpA; A::set_state(int value) { tTest_struct.eintrag = 0x00; // an dieser Stelle kommt der Error }Class B (Header):
struct Test_struct{ int eintrag; }; class B { ... private: Test_struct tTest_struct; Test_struct * tpTest_struct; ... }Class B (cpp):
#include b.h ... tTest_struct.eintrag = 0xFF; ...das Problem ist jetzt das ich aus Class A nicht auf die Structure zugreifen dann. Hoffe das hilft ein wenig weiter.
-
Wenn dann müsste es
tB.tTest_struct.eintrag = 0x00;heißen. das funktioniert allerdings auch nicht, da die struct in B private ist. Um diesen Code zu verwenden müsstest du die struct public machen(find ich ned so toll), oder du schreibst dir einen Setter in B der die daten für dich setzt.
-
Ach ja stimmt!!! Mist so einen bösen Fehler gemacht

Aber danke, jetzt klappt es zumindest erst mal auf dem uneleganten Weg, jetzt wird optimiert.
Danke nochmals
-
Ok eine Frage zum Thema Struct hätte ich noch:
Besteht die Möglichkeit erst zur Laufzeit zu entscheiden auf welches Structelement ich zugreifen will?
Sprich ich 20 Struct-Elemente und will dann abhängig von einem Funktionparameter auf das entsprechende Element zugreifen und dieses dann setzten. Eine "Index-Adressierung" wollte ich vermeiden.Danke schon mal im Voraus.
-
if?
-
SeppJ schrieb:
if?
hm...ok aber das würde dann heißen für jeden Struct-Eintrag eine Abfrage oder?
-
Vermutlich wäre es besser, wenn du erklärst, was du erreichen möchtest, nicht wie du glaubst, dass man es umsetzen sollte.
-
Also ich habe eine Structure mit 20 Elementen und eine Funktion "set_state", die zur Laufzeit verschiedene Elemente in der Struct setzen soll. Die zusetzenden Elemente werden der Funktion üvergeben.
-
wuddy45 schrieb:
Also ich habe eine Structure mit 20 Elementen und eine Funktion "set_state", die zur Laufzeit verschiedene Elemente in der Struct setzen soll. Die zusetzenden Elemente werden der Funktion üvergeben.
Aber wenn die Elemente beim set_state indizierbar sind, warum sind sie dann nicht im struct selbst indiziert? Und wenn sie im struct nicht logisch indizierbar sind, warum indizierst du sie dann bei set_state? Da liegt der Designwiderspruch den du lösen musst.
Kann es sein, dass dein struct schlicht und einfach zu viele Member hat? Zwanzig klingt extrem viel. Normalerweise hat man, wenn überhaupt, höchstens drei, vier Member die ein Nutzer setzen kann. Diese Member können natürlich wieder innere Komplexität haben. 20 gänzlich unabhängige Member klingen nach Designfehler.