[英]Returning Template from function
我正在尝试从函数返回指向模板的指针,但是出现错误:
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();
甚至有可能这样做吗?
您的函数声明为以下类型:
T*
但是您返回的是以下类型:
node<T>*
您需要使返回类型与函数类型保持一致。
函数search
被声明为返回T*
,但是您执行return ptr;
,其中ptr
是node<T>*
。 那行不通。 也许您想要像return ptr->data;
类的东西return ptr->data;
?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.