1

リンクされたリストの例からのこのコードのビットですが、この関数の2行目を理解するのに苦労しています。誰かが私に話してもらえますか?

template <typename T>
typename List<T>::Node* List<T>::search(T d)
{
    if(!head) return NULL;
    Node* cur = head;
    while(cur) {
        if(cur->data == d) return cur;
        cur = cur->next;
    }
    return NULL;
}    
4

3 に答える 3

3

クラス テンプレート (または特殊化)の*type* Nodeどこかにあるため、その型を参照するときは構文を使用する必要があります。List<>typename List<T>::Node

従属名typenameは、キーワードで明確にすることができます。

于 2013-08-08T15:47:11.977 に答える
0

を検討してくださいA<T>::X。X は型 (typedef、struct など) の場合もあれば、変数 (静的変数) の場合もあります。テンプレートの「内部」にいて、この方法でテンプレートを持つ型を使用するtypename場合は、 X が型である場合に追加してコンパイラを支援する必要があります。

于 2013-08-08T15:48:34.683 に答える