我有一个叫做AString的类。这是非常基本的:

class AString
{
public:
    AString(const char *pSetString = NULL);
    ~AString();
    bool operator==(const AString &pSetString);
    ...

protected:
    char *pData;
    int   iDataSize;
}

现在,我想编写这样的代码:
AString *myString = new AString("foo");
if (myString == "bar") {
    /* and so on... */
}

但是,现有的比较运算符仅支持
if (*myString == "bar")

如果我省略该星号,则编译器会感到不满意。

有没有一种方法允许比较运算符将*AStringconst char*进行比较?

最佳答案

不,那里没有。

要重载operator==,您必须提供用户定义的类型作为操作数之一,并且指针(AString*const char*)不合格。
而且,当比较两个指针时,编译器具有非常合适的内置operator==,因此它不会考虑将参数之一转换为类类型。

关于c++ - 如何重载operator ==()以获取指向类的指针?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3871039/

10-13 03:00