¿Pasando y almacenando una referencia constante a través de un constructor?

Esta es probablemente una pregunta simple, pero estoy atascado en ella. Estoy intentando pasar un objeto de ObjectA a ObjectB (que es miembro de ObjectA) a través de su constructor. Sin embargo, en lugar de pasar por valor, quiero pasar solo una referencia constante y almacenar esa referencia indefinidamente. El problema es que no estoy seguro de cómo hacerlo.

Puedo hacer que esto funcionecon punteros Me gusta esto:

class ClassB
{
private:
    int *ptrInternalX;
public:
    ClassB( int *tempX );
}

ClassB::ClassB( int *tempX )
{
    ptrInternalX = tempX
}

De esta manera, un objeto se crea y pasa un puntero a un int, y ese puntero se almacena dentro de la clase para su uso posterior.

Sin embargo, los indicadores me hacen preocuparme por las pérdidas de memoria y otros problemas cuando se utilizan objetos más grandes, por lo queMe gustaría intentar hacer algo como esto usando 'referencias constantes' (const y). Sin embargo, esto no parece funcionar ...

class ClassB
{
private:
    int &internalX;
public:
    ClassB( const int &tempX );
}

ClassB::ClassB( const int &tempX )
{
    internalX = tempX
}

Sé que las referencias son esencialmente un 'alias' para una variable existente (un nombre diferente que se refiere a la misma dirección de memoria), y deben inicializarse inmediatamente utilizando una variable existente. ¡Así que esto crea un error en mi programa!

¿Es esto posible? ¿O hay una manera mejor / más clara de hacer algo como esto? Las razones por las que quiero usar referencias constantes son la velocidad de pasar solo una referencia en lugar de un objeto grande, a la vez que mantengo los datos a salvo de cambios accidentales y pérdidas de memoria ... Estoy seguro de que existe una forma sencilla y directa haz esto pero no estoy muy familiarizado con el paso de referencias const.

Respuestas a la pregunta(1)

Su respuesta a la pregunta