Lo que normalmente haría en este caso es dar B
un constructor que toma un A
:
class B
{
public:
B(const A&);
};
Y hacer la conversión allí. El compilador dirá "¿Cómo puedo hacer que A
a B
? Oh, veo que B
se puede construir a partir de A
".
Otro método es utilizar un operador de conversión:
class A
{
public:
operator B(void) const;
}
y el compilador va a decir "¿Cómo puedo hacer que me A
un B
Oh, ya veo A
se puede convertir en B
?".
Tenga en cuenta que estos son muy fáciles de abusar. Asegúrese de que realmente tenga sentido que estos dos tipos se conviertan implícitamente.
Si no puede cambiar las definiciones de clase para la clase A o la clase B, no hay una buena manera de hacerlo. – Omnifarious