Tengo una clase llamada AString
. Es bastante básico:Cómo sobrecargar operador ==() para un puntero a la clase?
class AString
{
public:
AString(const char *pSetString = NULL);
~AString();
bool operator==(const AString &pSetString);
...
protected:
char *pData;
int iDataSize;
}
Ahora quiero escribir código como este:
AString *myString = new AString("foo");
if (myString == "bar") {
/* and so on... */
}
Sin embargo, el operador de comparación existente sólo admite
if (*myString == "bar")
Si omito que asterisco, la el compilador no está contento
¿Hay alguna manera de permitir que el operador de comparación compare *AString
con const char*
?
¿Por qué asigna dinámicamente 'myString'? ¿Por qué no es 'operator ==' un miembro 'const'? O mejor, ¿por qué es un miembro? O mejor aún, ¿por qué estás escribiendo tu propia clase de cuerda? – sbi
(1) No debería. Eso fue un error (2) ¿Podrías dar más detalles sobre eso? (3) ¿Por qué no sería miembro? (4) Porque la plataforma de destino es un sistema integrado que no tiene una clase de cadena nativa. – bastibe
2. Si no lo haces const, entonces no funcionará para const AString: s, 3. Como no necesita ser miembro y daría como resultado una mejor encapsulación, 4, ¿qué quieres decir con "cadena nativa"? clase"? tienes std :: string. – ronag