C++11 定义布尔逻辑运算符(v、^、XOR、>;、<;->;)

C++11 定义布尔逻辑运算符(v、^、XOR、>;、<;->;),c++11,C++11,假设我们有booltrue=(pvq)->R 如何定义运算符(或函数),以便符号(v,^,XOR,,>)调用执行逻辑的函数 >,例如:代码> BoOL Trale= P V Q,将调用 BoOL或(BoOL A,BoOL B)< /Calp>> P>不能在C++中定义任意的中缀运算符,也不能使用名称 true 作为变量名。 但是,C++已经提供了 > >或 &代码> >和 > 或!对于xor(对于bools,它们是等效的)和表示不可用。如果你想要逻辑暗示,最好使用!P | | Q,如果需要i

假设我们有
booltrue=(pvq)->R

如何定义运算符(或函数),以便符号(v,^,XOR,,>)调用执行逻辑的函数


>,例如:代码> BoOL Trale= P V Q,将调用<代码> BoOL或(BoOL A,BoOL B)< /Calp>

> P>不能在C++中定义任意的中缀运算符,也不能使用名称<代码> true <代码>作为变量名。
<>但是,C++已经提供了<代码> > <代码> >或<代码> &代码> >和<代码> > 或<代码>!对于xor(对于
bool
s,它们是等效的)和
表示不可用。如果你想要逻辑暗示,最好使用
!P | | Q
,如果需要iff,应该在字符串中使用
P==Q

,需要一个解析器。在源代码中,C++中不可行。不清楚你在问什么。您是否在询问如何实现将
bool true=P v Q
作为字符串的函数,并对其进行解析,然后决定调用
bool或(bool a,bool b)
?如果是这样,它应该使用什么值来调用
函数?它应该如何处理答案呢?你应该重载一个有效的操作符。但是,首先,您必须知道谁是c中的有效运算符,运算符
v
不是运算符,并且考虑到这一点:word
true
是保留字。检查此链接:@Quentin所以不进行分析就不可能了?@gurka,是的,我想让它在运行中确定,因为它不是字符串。在本例中,我希望
v
调用函数or(P,Q)。xor是
^
(只有一个插入符号)@gurka-Huh,我还以为有一个非位版本呢。我很少需要它,但我很惊讶它不存在。“DanielH,谢谢,我很清楚逻辑,我只是想有一种方法不用解析,我也不知道。”C++分析器不支持这个。它将
pvq
读作一行中的三个标识符,我认为这是永远不允许的。您可以
#定义v | |
,但如果您使用的库假定
v
是标识符,则会导致一大堆问题。@DanielH对于布尔型,xor是
=;)