[英]Is it possible to create “extension methods” like in C#, using macro in C++ ?
我想擴展std :: string並添加“equals”。 所以我做了以下事情:
#define Equals(str1) compare(str1) == 0
並使用以下代碼:
if ( str.Equals("hhhhllll") )
其中(我假設)編譯
if ( str.compare("hhhhllll") == 0 )
一切都很好。
現在我想改進我的宏,添加括號來編譯
if ( (str.compare("hhhhllll") == 0) )
我嘗試過類似的東西:
#define (str).Equals(str1) (str.compare(str1) == 0)
但它不會編譯(宏根本不適合)
我怎樣才能實現它?
你的宏:
#define (str).Equals(str1) (str.compare(str1) == 0)
不適合,因為它不符合宏定義。 你可以寫這樣的東西:
#define Equals(str, str1) (str.compare(str1) == 0)
但沒有必要。 可以將所有std::string
實例與重載的operatror==
進行比較。
這樣你就可以編寫以下代碼:
if (str == str1)
在C ++中使用宏定義是非常不推薦的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.