warum stürzt mein programm ab?



  • wenn ich

    else p = NULL;
    

    auskommentiere funktioniert mein programm, leider nicht logisch ):, aber wenn diese zeile drin ist stürzt das programm ab...
    wenn ich z.b. so darauf zugreife:

    //if(extra._struct_search_(1) != NULL)
    std::cout<<*meinarray._struct_search_(6)<<std::endl;
    

    das ist die funktion.

    template <class T>
    int *array<T>::_struct_search_(int stelle) //T = Struktur
    {
    	T *s;
    	int *p;
    	p = &struct_temp;
    
    	for(unsigned int i = 0; i < index_z; i++) //muss eh nie weiter als bis zur letzten benutzten zeile
    	{    
    		s = &array_eindim[i];
    
    		if(s->pos == stelle)
    		{
    			struct_temp = i;
    		}
    		else p = NULL;
    	}
    	return p;
    }
    

    wie man sieht wollt ich einen logischen wert des pointers nutzen um eine nicht erfolgreiche suche aufzuzeigen.
    warum funktioniert das nicht?



  • Null zu dereferenzieren ist nicht erlaubt.



  • exigoner schrieb:

    wie man sieht wollt ich einen logischen wert des pointers nutzen um eine nicht erfolgreiche suche aufzuzeigen.

    Dann mußt du den Pointer auch als logischen Wert überprüfen:

    if(p=mein_array._struct_search(6))
      cout<<*p<<endl;
    else
      cout<<"nicht gefunden"<<endl;
    

    (was mir gerade auffällt: Namen mit _ am Anfang könnten Probleme bereiten)


Anmelden zum Antworten