Zeiger auf Zeiger von Argument in der Methode funktioniert nicht?



  • funktioniert es denn nicht wenn ich in der methode einer klasse zeiger auf zeiger von argument zuweise?

    ich hab in Klassenheader

    public:
    	Thread();
    	void setPointer(bool *stopper = NULL );
    private:
    	bool **p_stopper;
    

    in source:

    void Thread::setPointer(bool *stopper)
    {
    	**p_stopper = &stopper;
    
    }
    

    und in main:

    check_trigger = true;
    thread1.setPointer(&check_trigger);
    

    stürzt immer ab.
    verstehe ich nicht



  • Sag lieber, was du erreichen willst, dann können wir dir auch bessere Vorgehensweisen aufzeigen. Doppelzeiger kommen nämlich sehr selten zum Einsatz, meist gibt es bessere Alternativen.

    Das Problem bei dir ist, dass du einen Zeiger kopierst und dir die Adresse der Kopie merkst - welche nach Ende der Funktion nicht mehr existiert.



  • sorry, ich glaub die 2 sternchen auf einen anderen zeiger war falsch



  • Nexus schrieb:

    Sag lieber, was du erreichen willst, dann können wir dir auch bessere Vorgehensweisen aufzeigen. Doppelzeiger kommen nämlich sehr selten zum Einsatz, meist gibt es bessere Alternativen.

    Das Problem bei dir ist, dass du einen Zeiger kopierst und dir die Adresse der Kopie merkst - welche nach Ende der Funktion nicht mehr existiert.

    hm stimmt ich glaub das ist es



  • Nexus schrieb:

    Sag lieber, was du erreichen willst, dann können wir dir auch bessere Vorgehensweisen aufzeigen. Doppelzeiger kommen nämlich sehr selten zum Einsatz, meist gibt es bessere Alternativen.

    also es geht um multithreads

    Die Threads sollen erfahren, dass in main bestimmte Werte verändert wurden. Deswegen muss man doch irgendwie Zeiger von threads auf diese zuweisen, damit immer die aktuellen Werte ermittelt werden können.



  • ah ich hab das problem gelöst. einfach p_stopper = stopper;

    und in header:

    bool *p_stopper;

    braucht man kein zeiger auf zeiger



  • Okay. Falls du wirklich mal Zeiger verändern müsstest, gäbe es auch noch die Möglichkeit, Referenzen auf Zeiger zu übergeben:

    MyClass*& Ptr
    

    Und benutze doch nächstes Mal die Editierfunktion, dann brauchst du auch keine Vierfachposts zu machen. 😉


Anmelden zum Antworten