Bien, estoy tratando de hacer una pequeña clase rápida para trabajar como una especie de tabla hash. Si puedo conseguir que funcione entonces yo debería ser capaz de hacer esto:operador [] = ¿sobrecarga?
StringHash* hash = new StringHash;
hash["test"] = "This is a test";
printf(hash["test"]);
y debe imprimir "Esto es una prueba".
Parece que tengo 2 problemas en este momento. En primer lugar lo hice:
const char* operator[](const char* key) {
for(int i = 0; i < hashSize; ++i) {
if(strcmp(hkeys[i], key) == 0) {return values[i];}
}
return NULL;
}
Pero cuando trato de buscar un valor que el compilador se queja de que
de error: inválido tipos `StringHash * [const char [5]]' para subíndice
Segundo operador [] = no parece ser la sintaxis correcta aquí. La única otra cosa que pude encontrar fue & operador [], pero no creo que funcione, ya que tengo que codificar el procedimiento de búsqueda ??? (¿No es esa sintaxis la que se usa para devolver una referencia de elemento de matriz?)
¿Es posible que lo que intento hacer aquí sea posible? Cualquier consejo apreciado. :)
Parece haber cierta confusión sobre lo que estoy tratando de hacer. Voy a publicar mi código:
producto terminado después de toda la ayuda:
Hmm ... Creo que entiendo lo que dices. ¿Quieres que escriba una clase con un operador =() y luego tener ese control agregar la entrada a la tabla, sí? Puedo ver que funciona. Sin embargo, lo que me preocupa es que no tenga que almacenar internamente otra matriz que contenga una instancia de esa clase para cada ... Ah, no, espera. Podría simplemente usar esos objetos como valores internos en lugar de const char * y luego hacer que devuelvan la cadena en la búsqueda. Lo tengo. :) – Khat
Dispara. No me dejará hacerlo de esta manera. Sigue tratando de devolver el objeto mágico en lugar de la cadena de caracteres. – Khat
Puede definir una conversión implícita entre el tipo "mágico" y 'const char *'. Sin embargo, usar 'std :: strings' es una solución más robusta. –