我有一個叫AString
的課。這是很基本的:如何爲指向類的指針重載operator ==()?
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*
?
爲什麼你動態分配'myString'?爲什麼不是'operator =='''const''成員?或者更好,它爲什麼是會員?或者甚至更好,你爲什麼要編寫自己的字符串類? – sbi 2010-10-06 10:36:19
(1)我不應該。那是一個錯誤。 (2)你能詳細說明一下嗎? (3)爲什麼不成爲會員? (4)因爲目標平臺是一個沒有本地字符串類的嵌入式系統。 – bastibe 2010-10-06 11:57:30
2.如果你不把它設爲const,那麼它不會爲const AString:s,3工作。因爲它不需要是成員並且會導致更好的封裝,4,你是什麼意思不是「本地字符串類」?你有std :: string。 – ronag 2010-10-06 12:51:20