-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*に宣言されていますが、 を実行します。return ptr;ここptrで、 はnode<T>*です。それはうまくいきません。おそらくあなたは次のようなものが欲しかったreturn ptr->data;ですか?

于 2012-12-04T16:03:18.110 に答える