[英]Override =~ operator in c++
我想在 C++ 中覆蓋 =~ 運算符。
有沒有辦法做到這一點。
當我嘗試操作 =~ (..)
編譯器報錯
錯誤:“~”標記之前的預期初始值設定項
注意:我需要解析如下表達式:
{ abc == 123 && pqr =~ cb }
=~ 運算符的含義是模式匹配。
C++ 沒有運算符=~
。 只能重載現有的運算符; 你不能像 Haskell 或其他語言一樣創建你自己的。 因此,您要實現的目標在語法上是不可能的。
沒有像 =~ 運算符這樣的東西。 並且沒有像 =x (x - 任何其他運算符) 這樣的東西。
你不能在 C++ 中定義新的運算符。
在您的情況下,使用運算符 ~ 然后使用賦值。
您需要使用已經存在的運算符。 沒有辦法 [1] 引入現有符號的新組合,並且您不能使用一元(單參數) operator~
,例如operator~
。
假設輸入類似於字符串,我會說operator%
或operator^
可能會起作用。 所以你得到if (abc == 123 && pqr % cb) ...
。
然后可以通過以下方式實現:
bool operator%(std::string a, std::string b)
{
return isMatch(a, b);
}
[1] 除了修改編譯器源代碼之外,由於這種類型的更改永遠不會在主流編譯器中進行,因此您將不得不永遠在自己的編譯器分支上維護此類更改。 當然,這假設您甚至有可用的編譯器源代碼,但並非所有編譯器都如此。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.