我想扩展std::string并添加“等于”。
所以我做了以下事情:
#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++中使用宏定义。
关于c++ - 是否可以像在C#中那样使用C++中的宏来创建 "extension methods"?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29455770/