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

甚至有可能做到这一点吗?

4

2 回答 2

1

您的函数声明为以下类型:

T*

但是您返回的类型是:

node<T>*

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

于 2012-12-04T16:02:39.777 回答
1

该函数search被声明为返回T*,但您执行时, a 是return ptr;在哪里。那是行不通的。也许你想要类似的东西?ptrnode<T>*return ptr->data;

于 2012-12-04T16:03:18.110 回答