kommunikation zwischen klasen haut nit hin!



  • k danke.. auch auf die gefahr hin das das jetztz total blöd und dumm klingt.. aber wie muß ich den zeiger einsetzen?



  • In deinem Beispiel würde das dann so aussehen!
    Anstatt mit dem Punkt (.) greifst du mit -> auf die Funktionen zu

    klasse_A *ClassA;
    ClassA->m_Pfad...

    [ Dieser Beitrag wurde am 28.08.2002 um 00:34 Uhr von BF_31 editiert. ]



  • k aber wenn ich das so mache und mit AfxMessageBox(KLASSE->m_Pfad)
    eine meldung wünsche dann stürtzt das programm ab....

    k der programm absturz liegt nicht am afx..

    keine ahnung warumd as teil abstürtzt...

    Weiß vielleciht wer warumd as abstürtzt?:

    void KLASSE_B::OnButtonFertigstellen()
    {
    UpdateData(TRUE);
    KLASSE_A *class;
    AfxMessageBox(class->m_Pfad);
    // TODO: Code für die Behandlungsroutine der Steuerelement-Benachrichtigung hier einfügen

    }

    [ Dieser Beitrag wurde am 28.08.2002 um 00:35 Uhr von Joachim Gugenberger editiert. ]

    [ Dieser Beitrag wurde am 28.08.2002 um 00:38 Uhr von Joachim Gugenberger editiert. ]



  • recht herzlichen dank für die hilfe..

    leider gehts noch immer nit... wenn ev einer zeit hat könnte er /sie sich bitte bei mir per icq(61758008) melden .. dann schick ich den ganzen quelltext...



  • Oha. 😕

    void KLASSE_B::OnButtonFertigstellen() 
    {
    UpdateData(TRUE);
    KLASSE_A* classA = new KLASSE_A;
    AfxMessageBox(classA->m_Pfad);
    // TODO: Code für die Behandlungsroutine der Steuerelement-Benachrichtigung hier einfügen
    // Und am Ende nicht delete vergessen!
    }
    

    Ich sage dir aber voraus, dass das auch keine Lösung des ursprünglichen Problems ist. Du musst m_Pfad beim Erstellen einer Instanz der Klasse (also im Konstruktor der Klasse) natürlich auf den Standard-Wert setzen.
    Außerdem (hab ich von junix gelernt): KEINE PUBLIC-Variablen. Schreib dir lieber ne Set-Methode. Das wird nämlich dann blöd, wenn du merkst, dass du doch eine Set-Methode schreiben musst, die Klasse aber schon oft OHNE eine solche verwendet hast. Du müsstest dann also alle alten Codes verändern, was einen enormen Arbeitsaufwand bedeutet.

    [ Dieser Beitrag wurde am 28.08.2002 um 02:08 Uhr von WebFritzi editiert. ]



  • Also irgendwie habe ich das Gefühl das keiner den armen Jungen versteht...

    Das ist doch scheiß egal wie ihr das macht, ob mit zeiger oder sonstnochwas, ihr legt jedes mal eine neue Instanz der klasse an!

    Was du machen mußt ist folgendes, du erstellst doch die 2 klassen irgendwo... Also Da wo du die Klasse A erstellst, merkst du dir dessen Pointer.

    Am besten legst du die Klasse gleich mit New an, dann hast du gleich einen Poiner, vor allem auf dem Heap, da ist mehr Platz...

    Etwa So:

    KLASSE_A* classA = new KLASSE_A;
    

    So, jetzt hast du Den Pointer. Nun legst du in der Klasse B eine Pointer von der Klasse A an. Natürlich nicht vergessen den Header der Klasse A zu includieren. das ganze machst du in der class selber...

    Etwa So:

    class Klasse_B
    {
    ...
    public:
    KLASSE_A* classA;...
    }
    

    So, nun kannst du, wenn du die Klasse B anlegst und die Klasse A kennst, folgendes machen:

    KLASSE_A* classA = new KLASSE_A;
    ...
    KLASSE_B* classB = new KLASSE_B;
    classB->classA = classA;
    

    So, nun kannst du in der Klasse B auf die Klasse A zugreifen...

    void KLASSE_B::OnButtonFertigstellen() 
    {
    UpdateData(TRUE);
    m_irgendwas = classA->m_Pfad ;
    }
    

    So, das solte geklärt sein...

    [ Dieser Beitrag wurde am 28.08.2002 um 09:48 Uhr von PanicMan editiert. ]





  • also irgendwie geht das noch immer nicht.. das programm stützt zwar nimma ab aber die variablen sind noch immer leer....

    naja wie dem auch sei.. danke für eure hilfe.. ich werde das jetzt mit nur einer klasse lösen. ist zwar grafisch nicht so schön aber egal...

    allerdings wärs toll wenn einer mir ev eine art tutorial schrieben kann was genau ich in welcher datei schreiben muß damit mein problem gelöst wird... denn so versteh ichs dann sicher leichter.

    [ Dieser Beitrag wurde am 28.08.2002 um 12:50 Uhr von Joachim Gugenberger editiert. ]



  • Schick mir mal deinen Quelcode, ich habe grad etwas zeit und kann ihn mir kurz anschauen...

    eMail: jbtn@gft.com

    PS: Am besten das komplette Projekt, keine Angst, misbrauch ausgeschlossen



  • hab meienn quellcode jetzt schon zusehr umgebaut... würde wieder viel arbeit kosten ihn wieder umzubaun... sorry


Anmelden zum Antworten