繁体   English   中英

从函数返回模板

[英]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; ,其中ptrnode<T>* 那行不通。 也许您想要像return ptr->data;类的东西return ptr->data;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM