【发布时间】:2010-10-06 09:15:34
【问题描述】:
我有一个名为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")
如果我省略了那个星号,编译器就会不高兴。
有没有办法让比较运算符将*AString 与const char* 进行比较?
【问题讨论】:
-
这个问题之前已经提出过:Here
-
为什么要动态分配
myString?为什么operator==不是const成员?或者更好的是,为什么它是会员?或者更好的是,你为什么要编写自己的字符串类? -
(1) 我不应该。那是一个错误。 (2) 你能详细说明一下吗? (3) 为什么不成为会员? (4) 因为目标平台是嵌入式系统,没有原生的字符串类。
-
2.如果您不将其设为 const,那么它将不适用于 const AString:s, 3。因为它不需要成为成员并且会导致更好的封装,4,您是什么意思没有“本机字符串类”?你有 std::string。
-
我不明白 (3)。您是否建议
operator==()成为好友功能?为什么封装更好?
标签: c++ pointers operator-overloading comparison-operators