Estoy tratando de enseñarme a mí mismo C++, y uno de los ejercicios tradicionales de "nuevo lenguaje" que siempre he usado es implementar alguna estructura de datos, como un árbol binario o una lista vinculada. En Java, esto era relativamente simple: podía definir algún Nodo de clase que mantuviera una variable de instancia Object data
, para que alguien pudiera almacenar cualquier tipo de objeto en cada nodo de la lista o árbol. (Más tarde trabajé modificando esto usando genéricos; de eso no se trata esta pregunta).¿Mantiene la referencia a cualquier tipo de objeto en C++?
No puedo encontrar una manera C++ idiomática similar de almacenar "cualquier tipo de objeto". En C usaría un puntero void
; lo mismo funciona para C++, obviamente, pero luego me encuentro con problemas cuando construyo una instancia de std::string
y trato de almacenarla en la lista/árbol (algo sobre un molde no válido de std::string&
a). ¿Hay tal manera? ¿C++ tiene un equivalente al objeto de Java (o NSObject de Objective-C)?
Pregunta de bonificación: Si no es así, y necesito seguir utilizando punteros vacíos, ¿cuál es la forma "correcta" de almacenar un std::string
en un void*
? Me encontré con static_cast<char*>(str.c_str())
, pero parece un poco detallado para lo que estoy tratando de hacer. ¿Hay una mejor manera?
¿Por qué bajó mi pregunta? –
Estoy interesado en saberlo también - No pude encontrar un idiota ni nada ... – Tim
Esto es como la vieja broma. Paciente: duele cuando hago esto. Doctor: No hagas eso. En C++, no hagas una colección de "nada". –