我想在c ++中覆盖=〜运算符 有没有办法做到这一点。
当我尝试操作符=〜(..)
时编译器给出错误
错误:在'〜'之前的预期初始化程序令牌
注意: 我需要解析表达式:
{abc == 123&& pqr = ~cb}
=〜运算符意味着模式匹配。
答案 0 :(得分:3)
C ++没有运算符=~
。只有现有的运营商才能超载;你不能在Haskell或其他语言中创建自己的。所以你要求实现的目标是不可能的。
答案 1 :(得分:1)
没有像=〜运算符这样的东西。 并且没有像= x(x - 任何其他运算符)这样的东西。
你无法在c ++中定义新的运算符。
在你的情况下使用operator~然后使用赋值。
答案 2 :(得分:0)
您需要使用已存在的运算符。 [1]无法引入现有符号的新组合,并且您不能使用一元(单个参数)的运算符,例如operator~
。
假设输入类似字符串,我会说operator%
或operator^
可能会起作用。所以你得到if (abc == 123 && pqr % cb) ...
。
然后可以通过以下方式实现:
bool operator%(std::string a, std::string b)
{
return isMatch(a, b);
}
[1]除了修改编译器源代码之外,由于这种类型的更改永远不会进入主流编译器,因此您必须永久地在编译器的分支上维护这样的更改。当然,这假设您甚至可以使用编译器源代码,而所有编译器都不是这样。