Linked list



  • Okey. Hab das korrigiert.
    Aber schaut euch bitte mal den folgenden Code an:

    bool
    task_list::delete_by_id(task_node *n, int id_)
    {
    	task_node *prev, *curr;
    	int i = 0;
    
    	if(n = NULL)
    	{
    		return false;
    	}
    	else
    	{
    		if(id_ > n->get_id()) 
    		{
    			return false;
    		}
    		else
    		{
    			prev = NULL;
    			curr = n;
    			i = 1;
    			while(i < id_)
    			{
    				prev = curr;
    				curr = *curr->get_next_node();
    				i = i+1;
    			}
    			if(prev=NULL)
    			{
    				n = *curr->get_next_node();
    				free(curr);
    			}
    			else
    			{
    				*prev->get_next_node() = *curr->get_next_node();
    				free(curr);
    			}
    		}
    	}
    	return true;
    }
    

    Mein Compiler sagt: Funktion akzeptiert keine 1 Argumente

    What the... Was ist falsch, wieso und wie wäre es richtig?



  • Über welche Funktion beschwert er sich denn?

    (btw, was gibt eigentlich die get_next_node()-Methode zurück? So, wie du die hier verwendest, sieht es ein wenig seltsam aus.)



  • MaxC++ schrieb:

    Mein Compiler sagt: Funktion akzeptiert keine 1 Argumente

    What the... Was ist falsch, wieso und wie wäre es richtig?

    Der sagt bestimmt auch, in welcher Zeile der Fehler ist ...

    Und warum benutzt du free in C++?



  • Ahh..danke, wegen dem Hinweis mit der get_next_node 😉
    Hab den Fehler dort gefunden 🙂

    ..wegen dem free: Darf / Soll man das nicht verwenden?



  • MarcC++ schrieb:

    Ahh..danke, wegen dem Hinweis mit der get_next_node 😉
    Hab den Fehler dort gefunden 🙂

    ..wegen dem free: Darf / Soll man das nicht verwenden?

    Man verwendet normalerweise 'delete' in C++. Meistens ist RAII jedoch noch besser.



  • Sagen wir es so: Es ist nicht üblich 😉

    malloc()/free() stammt noch aus C und hat den großen Nachteil, daß es sich nicht um Konstruktoren bzw. Destruktoren der beteiligten C++ Objekte kümmert. Deshwegen verwendet man in C++ lieber new und delete für die Speicherverwaltung.



  • icarus2 schrieb:

    MarcC++ schrieb:

    Ahh..danke, wegen dem Hinweis mit der get_next_node 😉
    Hab den Fehler dort gefunden 🙂

    ..wegen dem free: Darf / Soll man das nicht verwenden?

    Man verwendet normalerweise 'delete' in C++. Meistens ist RAII jedoch noch besser.

    RAII? komisches buzzword 🙄



  • _-- schrieb:

    icarus2 schrieb:

    MarcC++ schrieb:

    Ahh..danke, wegen dem Hinweis mit der get_next_node 😉
    Hab den Fehler dort gefunden 🙂

    ..wegen dem free: Darf / Soll man das nicht verwenden?

    Man verwendet normalerweise 'delete' in C++. Meistens ist RAII jedoch noch besser.

    RAII? komisches buzzword 🙄

    Resource Acquisition Is Initialization. RAII ist dafür die Standardabkürzung 😉



  • _-- schrieb:

    RAII? komisches buzzword 🙄

    SFINAE 😃



  • MaxC++ schrieb:

    Okey. Hab das korrigiert.
    Aber schaut euch bitte mal den folgenden Code an:

    // dein code
    

    Vielleicht solltest du dir angewöhnen das VERGLEICHE AUF GLEICHHEIT mit == passieren und ZUWEISUNGEN mit =. Das passiert dir DREI mal, und das korrigierte Beispiel hast du (so siehts für mich aus) einfach Übernommen ohne es mit dem von dir geposteten zu vergleichen - dann hätte dir das Auffallen können.


Anmelden zum Antworten