簡體   English   中英

在 C++ 中覆蓋 =~ 運算符

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM