簡體   English   中英

我的代碼看起來不錯。 為什么會收到“錯誤:')'標記之前的預期主表達式”?

[英]My code looks fine. Why am I getting a “error: expected primary-expression before ')' token”?

錯誤在下面的指示行上。 是什么賦予了?

template <class T> T List<T>::count(T thisElement) { 
    node* curNodePtr = firstNodePtr;
    int cnt = 0;
    while (curNodePtr) { 
        if (curNodePtr->val == T) // error: expected primary-expression before ')'
            ++cnt;
        curNodePtr = curNodePtr->next;
    }
    return cnt;
}
template <class T> T List<T>::count(T thisElement) { 

首先,我想如果您編寫一個count方法,您寧願返回一個int而不是T ,因此此行應如下所示:

template <class T> int List<T>::count(T thisElement) { 

我們繼續...

    if (curNodePtr->val == T) 

我確定您想編寫類似以下內容的內容:

    if (curNodePtr->val == thisElement) 

T是一種類型。 如果以后使用int專門化類,則代碼行將變為:

    if (curNodePtr->val == int) 

這就是編譯器抱怨的原因。

為什么會收到“錯誤:')'標記之前的預期主表達式”?

因為T是一種類型。 您需要與實例進行比較。 例如, T()

if (curNodePtr->val == T()) ....
                        ^^

除此之外,您還必須確保您的函數確實做了明智的事情。 那是另一回事。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM