Zeigerzugriff funktioniert nicht...



  • Hallo, ich habe ein großes Problem bei einer Adressesabfrage, der Code ist zwar mit Qt geschrieben, aber das Problem scheint eher C++ bezogen zu sein. Und zwar habe ich eine Tabelle mit Einträgen, den Einträgen habe ich noch eine Adresse zu einer wichtigen Klasse zugewiesen und falls die Maus einen Eintrag selektiert wird eine Slotfunktion aufgerufen und dem Zeiger *current_unit; diese Adresse zur Klasse zugewiesen. Wenn ich jetzt aber über eine andere Klasse die eben zugewiesene Adresse über den Zeiger erfahren will, bekomme ich nur Müll. Weis jemand Rat???

    class UnitList : public QWidget
    {
    //...
    
    private slots:
    	void currUnit(QListWidgetItem* item) {
    		current_unit = static_cast<ListWidgetItem*>(item)->unit();
    		std::cout<<"current unit: "<<current_unit<<std::endl;  //adressenabfrage klappt
    	}
    
    public:
    //...
    
    	Unit *current_unit;
    };
    
    void GraphWidget::dropEvent(QDropEvent *event)
    {
    //...
    	else if(event->mimeData()->hasFormat("unit_list/unit") ) {
    //...
    		UnitList *source = static_cast<UnitList*>(event->source() );
    		std::cout<<"unitlist: "<<source<<std::endl;  //adresse wahrscheinlich richtig
    
    		std::cout<<"unit: "<<source->current_unit<<std::endl;  //klappt gar nicht, adresse falsch!!!
    
    //...
    	}
    //...
    }
    


  • Hallo

    Du must überprüfen ob event wirklich beim Aufruf von Auszug 2 in source eine gültige Instanz hat. Das läßt sich für uns hier aber nicht sehen. Benutzt den Debugger.

    bis bald
    akari


Anmelden zum Antworten