从功能返回模板

时间:2012-12-04 16:01:26

标签: c++ templates pointers

我正在尝试从函数返回指向模板的指针,但是我收到错误:

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();

甚至可以这样做吗?

2 个答案:

答案 0 :(得分:1)

您的函数声明为:

T*

但是你要回复一种:

node<T>*

您需要保持返回类型与您的函数类型一致。

答案 1 :(得分:1)

声明函数search返回T*,但您执行return ptr;,其中ptrnode<T>*。那不行。也许你想要像return ptr->data;

这样的东西