c++中的覆盖=~操作符

Override =~ operator in c++

本文关键字:操作符 覆盖 c++      更新时间:2023-10-16

我想在c++中重写=~操作符。
有什么办法能做到这一点。

当我尝试操作符=~(…)

编译器给出错误

错误:'~'标记前期望初始化项

注意:我需要解析如下表达式:

{ABC == 123 &&PQR =~ cb}

=~操作符的意思是模式匹配

c++没有=~操作符。只能重载现有的操作符;你不能像在Haskell或其他语言中那样创建自己的。所以你要达到的目的在语法上是不可能的。

没有=~这样的操作符。也没有像=x (x -任何其他运算符)这样的东西

c++中不能定义new操作符

在你的例子中使用操作符~,然后使用赋值。

您需要使用已经存在的操作符。没有办法[1]引入现有符号的新组合,并且不能使用一元(单参数)操作符,例如operator~

假设输入是类似字符串的东西,我会说operator%operator^可能会工作。得到if (abc == 123 && pqr % cb) ...

这可以通过:

bool operator%(std::string a, std::string b)
{
   return isMatch(a, b);
}

[1]除了修改编译器源代码之外,由于这种类型的更改永远不会进入主流编译器,您将不得不在自己的编译器分支上永远维护这样的更改。而且,当然,假设您甚至有编译器源代码可用,这不是所有编译器的情况。