Je reçois une erreur de compilation pour une fonction de création que j'utilise avec la fonction d'insertion. Cela fonctionne quand je fais les différents appels dans la clause if, mais je veux le déplacer à une fonction de création séparée à la place. Toute aide concernant l'erreur de compilation que j'obtiens est appréciéeC++ liste chaînée insertion fonction
| 76 | erreur: impossible de convertir list_link*' to
sorted_list :: list_link * 'in assignment |
Le fichier d'en-tête
class sorted_list
{
public:
sorted_list(); // Constructor declaration
~sorted_list(); // Destructor declaration
void insert(int key, double value);
void print();
private:
class list_link
{
// Declarations
public:
my_key_type key;
my_value_type value;
list_link *next;
};
list_link* first;
};
Les fonctions
void sorted_list::insert(int key, double value)
{
list_link *curr, *prev;
curr = first;
while(curr)
{
prev = curr;
curr = curr->next;
}
if(first == 0 || prev == 0) //if empty or add first
{
cout << "empty list" << endl;
list_link *new_link = new list_link;
new_link->key = key;
new_link->value = value;
new_link->next = 0;
first = new_link;
}
else
{
cout << "add" << endl;
prev->next = create(key, value, 0);
}
}
créer la fonction
list_link* create(my_key_type key, my_value_type value, list_link* next)
{
// creates the node;
list_link *new_link = new list_link;
// add values to the node;
new_link->key = key;
new_link->value = value;
new_link->next = next;
return new_link;
}
est il y a une autre manière, puisque je veux garder la création de nœud interne à la classe seulement – starcorn
@starcorn, si elle est interne, alors n'utilisez pas une fonction autonome; rend la fonction create une fonction privée de tried_list. –
ah, c'est ce que je pensais mais j'ai continué à me débattre pendant un certain temps avant de voir que je devais écrire sorted_list :: list_link sorted_list :: create() {} dans le fichier .cc. De toute façon je pense que je l'ai réglé maintenant. Merci – starcorn