¿Puedo pasar "esto" a una función como un puntero, desde dentro del constructor de la clase, y usarlo para apuntar a los miembros del objeto antes de que el constructor regrese?Pasando "esto" a una función desde dentro de un constructor?
¿Es seguro hacer esto, siempre y cuando los miembros accedidos se inicialicen correctamente antes de la llamada de función?
A modo de ejemplo:
#include <iostream>
class Stuff
{
public:
static void print_number(void *param)
{
std::cout << reinterpret_cast<Stuff*>(param)->number;
}
int number;
Stuff(int number_)
: number(number_)
{
print_number(this);
}
};
void main() {
Stuff stuff(12345);
}
pensé que esto no iba a funcionar, pero parece. ¿Este comportamiento estándar, o solo un comportamiento indefinido, sigue mi camino?
Half true. Piense dos veces antes de usar esto en un constructor, especialmente cuando algo podría derivar de la clase. En ese caso, usted trabaja con una clase parcialmente construida y la llamada virtual es, afaik, indefinida. Lo mismo es cierto para el "estado de clase" general: el constructor derivado aún puede modificarlo. – user52875