错误:“在int之前预期的primary-expression”

时间:2012-03-02 14:15:37

标签: c++

我收到一个错误:当我尝试在bool函数中返回2个值时,期望在int之前的primary-expression,我认为它是一个成员函数错误。

bool binaryTreeTraversal::LeafNode(int node)
{
        return (binaryTreeTraversal::LeftPtr(int node) == NULL &&   
        binaryTreeTraversal::RightPtr(int node) == NULL);

}

class binaryTreeTraversal

{
public:
    int TreeNodes[2^5];
    int size;
    binaryTreeTraversal(void);
    bool LeafNode(int node);
    int RootNode(int node);
    int LeftPtr(int node);
    int RightPtr(int node);
    int length();
    int preOrderTraversal(int);
    int inOrderTraversal(int);
    int postOrderTraversal(int);
};

bool binaryTreeTraversal::LeafNode(int node)
{
    return (binaryTreeTraversal::LeftPtr(node) == NULL &&
            binaryTreeTraversal::RightPtr(node) == NULL);
}

6 个答案:

答案 0 :(得分:8)

让这个问题对其他人有用:“预期的初级表达”意味着“我以为你会在这里放一个表达。”

表达式是对象,函数调用或应用于对象和函数调用的运算符。例如,x + f(y)是一个涉及变量xy,函数f和运算符+的表达式。

有许多类型的表达式,但区别对于此错误消息的目的并不重要。

在表示函数调用的左括号之后,您需要输入一个表达式,表示要作为参数传递给函数调用的值。但相反,编译器看到了单词int,它不是变量或函数或运算符。

答案 1 :(得分:2)

变化:

return (binaryTreeTraversal::LeftPtr(int node) == NULL &&
        binaryTreeTraversal::RightPtr(int node) == NULL);

为:

return (binaryTreeTraversal::LeftPtr(node) == NULL &&
        binaryTreeTraversal::RightPtr(node) == NULL);

编辑:

LeftPtr()RightPtr()的返回类型为int

class binaryTreeTraversal
{
public:
    ...
    bool LeafNode(int node)
    {
        return (binaryTreeTraversal::LeftPtr(node) == 0 &&
                binaryTreeTraversal::RightPtr(node) == 0);
    }
};

或:

class binaryTreeTraversal
{
public:
    ...
    bool LeafNode(int node)
    {
        return (!binaryTreeTraversal::LeftPtr(node) &&
                !binaryTreeTraversal::RightPtr(node));
    }
};

LeftPtr()RightPtr()不是virtual

class binaryTreeTraversal
{
public:
    ...
    bool LeafNode(int node)
    {
        return (!LeftPtr(node) && !RightPtr(node));
    }
};

答案 2 :(得分:0)

return(binaryTreeTraversal :: LeftPtr( int node )== NULL&&
    binaryTreeTraversal :: RightPtr( int node )== NULL);

//从粗体部分删除int

答案 3 :(得分:0)

    return (binaryTreeTraversal::LeftPtr(int node) == NULL && binaryTreeTraversal::RightPtr(int node) == NULL);

应该是

return (binaryTreeTraversal::LeftPtr(node) == NULL && binaryTreeTraversal::RightPtr(node) == NULL);

答案 4 :(得分:0)

bool binaryTreeTraversal::LeafNode(int node)
{
    return ((LeftPtr(node) == NULL) && (RightPtr(node) == NULL));
}

答案 5 :(得分:0)

这只是一个简单的错误,因此您无需担心;-) //错误的代码

1: int displayMessage (int num1, int num2)
2: {
3:   displayMessage(int num1, int num2);
4: }

第3行,您已经编写了(int num1,int num2),这两个变量都已定义,因此您无需再次定义。

Please don't try to define the variables again. 




 1: int displayMessage (int num1, int num2)enter code here
    2: {
    3:   displayMessage(num1,num2);
    4: }

您可以通过此基础知识enter link description here