簡體   English   中英

是否可以使用C ++中的宏創建像C#中的“擴展方法”?

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

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