我收到一个错误:当我尝试在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);
}
答案 0 :(得分:8)
让这个问题对其他人有用:“预期的初级表达”意味着“我以为你会在这里放一个表达。”
表达式是对象,函数调用或应用于对象和函数调用的运算符。例如,x + f(y)
是一个涉及变量x
和y
,函数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