schorschi Geschrieben 27. November 2005 Geschrieben 27. November 2005 Ich muß nochmal nerven. Für die Beschreibung muß ich wohl etwas weiter ausholen. Ich habe ein *.mdb File incl. Kennwort erstellt. Ich habe inzwischen meine Klasse, welche vom Typ DaoRecordset abgeleitet ist, soweit geändert das ich Methoden habe welche mir das *.mdb File über eine Variable von Typ CDaoDatabase das File öffnet. Es ist mir auch möglich innerhab dieser Klasse Variablen vom Typ recordset zu bilden und Abfragen zu formulieren und auszuführen, eigentlich alles ok. Ich möchte aber gerne so wie vorher arbeiten. Eine Instanz von meinem recordset bilden diese öffnen und über diese Instanz auf die Variablen des *.mdb zugreifen. Ich möchte nicht über die Sql abfragen mit der db arbeiten. Meine Frage ist nun, es muß doch möglich sein der Instanz die Eigenschaften der innerhalb der Klasse gebildeten Variable vom Typ recordset welche ich auch geöffnet habe zuzuweisen. Es müßte eine Frage des Gültigkeitsbereichs sein. Wenn ich z.B. meine Variable vom typ Recordset innerhalb der Klasse benutze und anschließen die Variable der Instanz von meiner Klasse recordset so sind es zwei unterschiedliche. Vielleicht ist mein Ansatz auch falsch. Ich würde mich freuen wenn die Antworten etwas ausführlicher sind, da ich in KEINER Ausbildung oder Studium bin. Das Internet und Bücher sind leider meine einzigsten Quellen. Danke im voraus Joerg Zitieren
Guybrush Threepwood Geschrieben 28. November 2005 Geschrieben 28. November 2005 Hmm also ich habe dein Problem jetzt ehrlich gesagt nicht so ganz verstanden, aber willst du nicht einfach nur sowas in der Art? #include <stdio.h> class A { public: A() { i = 5; } int i; }; class B { public: A a; }; int main(){ B b; printf ("%i\n",b.a.i); return 0; } [/PHP] Zitieren
schorschi Geschrieben 28. November 2005 Autor Geschrieben 28. November 2005 Ich versuche mal den Sinn wiederzugeben, Syntaktisch totaler Schrott aber ich hoffe man kann den Sinn verstehen: class A { public: Methode_open_A(); Methode_tu_was_A(); int a,b,c; A() { a=1; b=2; c=3; } } /////////////////////////////////////////////////////// class B abgeleitet von A { public: int a,b,c; CDaoWorkspace m_wk; CDaoDatabase m_db; Methode_open_B();//überschrieben und ich verwende in dieser Methode zum Beispiel Variable d und e zum öffnen . Methode_tue_was_A();//aus der abgeleiteten Klasse A } B():m_database(&m_wk),m_recordset(&m_database) { a=10; b=20; c=30; CDaoDatabase m_database(&m_wk); CDaoRecordset m_recordset(&m_database); } } /////////////////////////////////////////////////////////// Class C { public: B b: C() { .. }; } b.Methode_open_B()//Die Datenbank öffnen und das recordset b.a;//Mit diesem zugriff kann ich auf die Variable der klasse B zugreifen also a==10, was ich brauche ist aber a==1; Wenn ich die Methode_tue_was_A() verwende so bekomme ich einen Fehler.Da ich nicht den korrekten Gültigkeitsbereich habe. Ich habe in meiner Klasse B die Datenbank mit einer 'überschriebenen' Methoden geöffnet bekommen aber ich kann nicht über vorhandene Methoden weiter mit der Datenbank arbeiten. Da liegt daran das ich innerhalb der neuen Methode ,mit der ich überschrieben habe, mich weder auf bisherige Variablen der Instanz zurückgreife noch Werte hinterher weitergebe ich habe also keinen Bezug zu der abgeleiteten Klasse. Ich hätte genausogut eine neue leere Klasse schreiben können was ich nicht möchte. Wie gesagt erschlagt mich nicht für die Syntax, ich hoffe ich habe mein Problem etwas besser geschildert sorry für die langen Texte Zitieren
Guybrush Threepwood Geschrieben 28. November 2005 Geschrieben 28. November 2005 b.a;//Mit diesem zugriff kann ich auf die Variable der klasse B zugreifen also a==10, was ich brauche ist aber a==1; Nach deinem Beispiel kann a in dem Fall aber nie 1 sein. a wird ja nur im Konstruktor der Klasse A auf 1 gesetzt. Wenn du nun eine Instanz von B erzeugst wird aber nicht der Konstruktor von A sondern von B aufgerufen und deshalb ist a gleich 10. Das hat mit Gültigkeitsbereichen nichts zu tun. Zitieren
schorschi Geschrieben 28. November 2005 Autor Geschrieben 28. November 2005 Ja ziehmlich verwirrend meine Beschreibung, aber durch den Versuch es Dir nochmals genauer zu beschreiben, habe ich die Lösung gefunden. Ich stand da wie der Ochse vom Berg. Im Konstruktor der abgeleiteten Klasse habe ich die Möglichkeit, was ich merkwürdigerweise erst jetzt bemerkt habe, der Instanz einen Pointer vom Typ CDaoDatabase mitzugeben, also mein fehlende Bindung sozusagen. Ist schon manchmal witzig wenn man sein Problem versucht genau zu schildern, daß man auf die Lösung kommt:rolleyes: . Hättest Du nicht gefragt hätte ich nicht versucht erneut zu beschreiben. Also danke Zitieren
Guybrush Threepwood Geschrieben 28. November 2005 Geschrieben 28. November 2005 Immer wieder gerne Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.