我的代码看起来不错。为什么我要得到"error: expected primary-expression before ')' token"?

My code looks fine. Why am I getting a "error: expected primary-expression before ')' token"?

本文关键字:before primary-expression 看起来 代码 token expected 我要 为什么 error 我的      更新时间:2023-10-16

下面表示的行上的错误。是什么赋予了?

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) { 

首先,如果您编写计数方法,我想您宁愿返回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()) ....
                        ^^

除此之外,您还必须确保您的功能实际上可以做一些明智的事情。那是另一回事。

相关文章: