У меня есть класс под названием 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 ==' a 'const' член? Или лучше, почему это вообще член? Или даже лучше, почему вы пишете свой собственный класс строк? – sbi
(1) Я не должен. Это была ошибка. (2) Не могли бы вы рассказать об этом? (3) Почему бы не стать членом? (4) Поскольку целевая платформа является встроенной системой, которая не имеет собственного класса строк. – bastibe
2. Если вы не сделаете его const, то он не будет работать для const AString: s, 3. Потому что ему не нужно быть членом и приведет к лучшей инкапсуляции, 4, что вы имеете в виду без «родной строки» класс"? у вас есть std :: string. – ronag