![](/img/trans.png)
[英]Why am I getting this error? "expected primary-expression before ‘;’ token"
[英]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.