2012-12-04 9 views
-1

Je suis en train de retourner un pointeur vers un modèle à partir d'une fonction, mais je me donne l'erreur:De retour Modèle de la fonction

error C2440: 'return' : cannot convert from 'node<T>*' to 'Customer*' 

Ce qui est étrange, parce que je sais que le modèle tient sans aucun doute un client objet.

La classe qui renvoie l'erreur est la suivante:

template <class T> 
T* l_list<T>::search(int id) 
{ 
    int i = 0; 
    node<T> *ptr = head; 
    while (id != ptr -> data.getId()) 
    { 
     ptr = ptr -> next; 
     i++; 

     if (id = ptr -> data.getId()) 
     { 
      return ptr; 
     } 
    } 
} 

et je l'appelle en faisant ceci:

cin >> id; 
Customer* ptr = customers.search(id); 
ptr -> createAccount(); 

Est-il même possible de le faire?

Répondre

1

Votre fonction est déclarée de type:

T* 

Mais vous retournez un type de:

node<T>* 

Vous devez garder votre type de retour compatible avec votre type de fonction.

1

La fonction est déclarée search revenir T*, mais vous exécutez return ptr;, où ptr est un node<T>*. Cela ne peut pas fonctionner. Peut-être que vous vouliez quelque chose comme return ptr->data;?

+0

Merci, cela a corrigé cette erreur, mais cette ligne se plaint que je ne peux pas convertir 'Client à' Client * ' – Awia

+1

@ user1864298, return & ptr-> données – neagoegab

Questions connexes