digitalFreeman
Grünschnabel
Hallo,
ich verstehe nicht, was an folgendem Gedanken verkehrt ist. Ich habe den Listenkopf einer verketteten Liste und möchte meinetwegen die Größe meiner Liste über eine Methode GetListSize(...) bestimmen.
Nehmen wir mal folgendes:
Nun möchte ich gerne, dass der Methode GetListSize(...) als Parameter der Zeiger auf den Listenkopf übergeben wird. Um Auszudrücken, dass der übergebene Zeiger durch die Methode nicht verändert wird, wollte ich den Parameter als konstant auszeichnen. Also in etwa sowas:
Der Compiler meckert allerdings, dass in der Zeile
eine ungültige Konvertierung stattfindet: invalid conversion from `const entry*' to `entry*'.
Die LinkedList ist nur ein Beispiel für mein Problem. Ich möchte eigentlich nur wissen, wieso ich keinen konstanten Pointer-Parameter innerhalb der Methode kopieren kann. Eigentlich möchte ich halt ausdrücken, dass der übergebene Zeiger unverändert bleibt. Was ist an der obigen Lösung falsch? Wieso kann ich keine Kopie des Pointers erzeugen? Wie kann ich das gewollte stattdessen ausdrücken, nämlich dass der übergebene Zeiger nicht verändert wird?
ich verstehe nicht, was an folgendem Gedanken verkehrt ist. Ich habe den Listenkopf einer verketteten Liste und möchte meinetwegen die Größe meiner Liste über eine Methode GetListSize(...) bestimmen.
Nehmen wir mal folgendes:
Code:
struct linked_list
{
int value;
linked_list *next;
};
Nun möchte ich gerne, dass der Methode GetListSize(...) als Parameter der Zeiger auf den Listenkopf übergeben wird. Um Auszudrücken, dass der übergebene Zeiger durch die Methode nicht verändert wird, wollte ich den Parameter als konstant auszeichnen. Also in etwa sowas:
Code:
int Klasse::GetListSize( const struct linked_list *head )
{
// Zeiger kopieren
struct linked_list *entry = head;
int size = 0;
while( entry != NULL )
{
size++;
entry = entry->next;
}
return size;
}
Der Compiler meckert allerdings, dass in der Zeile
Code:
struct linked_list *entry = head;
Die LinkedList ist nur ein Beispiel für mein Problem. Ich möchte eigentlich nur wissen, wieso ich keinen konstanten Pointer-Parameter innerhalb der Methode kopieren kann. Eigentlich möchte ich halt ausdrücken, dass der übergebene Zeiger unverändert bleibt. Was ist an der obigen Lösung falsch? Wieso kann ich keine Kopie des Pointers erzeugen? Wie kann ich das gewollte stattdessen ausdrücken, nämlich dass der übergebene Zeiger nicht verändert wird?