Necesito usar una cadena como ID para obtener algún objeto. En implementar esto en un tiempo de ejecución, y funciona bien. Pero esto hace imposible la verificación de tipo estático, por razones obvias.hashing de cadena en tiempo de compilación
He buscado en Google para el algoritmo para calcular el hash-suma de cadena en el tiempo de compilación: C++ compile-time string hashing with Boost.MPL.
Parece ser la solución perfecta para mi problema, excepto que el sring que es necesario para el algoritmo se debe dividir en pedazos por 4 caracteres, o carácter por carácter, también, por razones obvias.
es decir, en lugar de la habitual registro actual de las identificaciones, voy a tener que escribir de esta manera:
hash_cstring<boost::mpl::string<'obje', 'ct.m', 'etho', 'd'>>::value
Esto es absolutamente inutilizable.
La cuestión es cómo pasar correctamente la cadena como "object.method"
a este algoritmo?
Gracias a todos.
¿Puedes usar struct con string estático en lugar de string directamente? tal vez una macro para generarlos también? – Anycorn
@aaa: las macros no dividen tokens, pueden stringize o concatenarlos, pero no los dividen. –
@Matt macros para generar struct con nombre y cadena estática. ej. '#define str (n) struct n {...}' – Anycorn