2012-12-04 53 views
-1

我想爲指針的函數返回一個模板返回模板,但我給出的錯誤:從功能

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

這是奇怪的,因爲我知道,模板絕對是拿着客戶目的。

返回錯誤的類是這樣的:

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; 
     } 
    } 
} 

,我叫它做這個:

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

它甚至有可能做到這一點?

回答

1

你的函數聲明類型:

T* 

但是你返回類型:

node<T>* 

你需要保持你的返回類型與函數類型一致。

1

功能search聲明爲返回T*,但你執行return ptr;,其中ptrnode<T>*。這是行不通的。也許你想要類似return ptr->data;

+0

謝謝,修正了那個錯誤,但是這一行抱怨我無法將'客戶'轉換爲'客戶*' – Awia

+1

@ user1864298,返回&ptr->數據 – neagoegab