为什么g ++编译器会说:error:在'xor'标记之前预期的unqualified-id
class BigInteger{
public:
unsigned *array;
BigInteger xor(BigInteger bi){ // g++ indicates error this line
BigInteger n;
if(bi.array == (unsigned*)0){
return n;
}
return n;
}
};
答案 0 :(得分:13)
xor
是C ++中^
的备用标记,您不能将其用作标识符。 or
/ bitor
和and
/ bitand
(||
,|
,&&
和&
分别相同),以及其他一些人。它们基本上是if
或for
等关键字。
为您的功能选择其他名称。
替代令牌的完整列表(C ++标准§2.12关键字,请参阅§2.6替代令牌的映射):
答案 1 :(得分:0)
的呻吟声。是的,这就是追逐你的尾巴之一然后意识到“什么?”并动摇你的头脑情况。
在我的情况下,我有一个类定义,它定义了一个类方法:
List* xor(List* list)
一个人得到g ++有用的错误消息: 错误:在'^'标记
之前预期的非限定标识最终人们发现xor是^的同义词,因此不能是函数名。
更糟糕的是(在我的情况下)是在Visual Studio(在我的情况下为2010)中在MS Windows中完美地运行。并且是自1999年以来通过各种Visual Studio版本开发的代码(Visual Studio 6)。
所以现在我需要在Windows上重命名该函数并重建,以及在linux上重建g ++ ...当你处理它时,这些问题会变得更大。