Actualmente estoy portando una aplicación C++ a un entorno ligeramente restringido. La aplicación utiliza las clases STL, de cadena y de transmisión. Estoy reescribiendo versiones simplificadas de estos que jugarán muy bien en mi entorno.C++ Falló sin la definición de operador
Lo que me preocupa es que mi aplicación se está compilando incluso sin todas las definiciones de operador necesarias. Por ejemplo, para mis clases de cadena definí:
string operator+ (const string& lhs, const string& rhs);
y esto fue suficiente. Sin embargo, noté que a menudo había casos que tenían mystring + "alguna cadena constante" y esto no está definido en mi código en ninguna parte. Cuando lo agregué explícitamente, se utilizó:
string operator+ (const string& lhs, const char* rhs);
¿Qué estaba pasando antes de eso? Se compiló con éxito antes de agregar la segunda función. Seguramente el compilador no podría inferir cómo concatenar cadenas de estilo c a mi clase de cadenas.
Tengo un comportamiento extraño en mi programa ahora y me pregunto si es debido a que otros operadores no están definidos. ¿Hay alguna manera de hacer cumplir el compilador para requerir tales definiciones de operador si el programa lo necesita?
P.S. Mi clase de cadena está en un espacio de nombres único y no relacionado con std ::
¿Tiene una conversión implícita o un constructor que convierta de 'const char *' a su clase 'string'? –
Sí, mi clase de cadena tiene un constructor con un parámetro "const char * cstr". ¿Crees que podría ser eso? – hayesti
@Bob: [Esta pregunta] (http://stackoverflow.com/questions/2346083/) podría ser de su interés. –