Qu'est-ce que vous feriez normalement dans ce cas est de donner B
un constructeur qui prend un A
:
class B
{
public:
B(const A&);
};
Et faire la conversion là-bas. Le compilateur dira "Comment puis-je faire A
un B
? Oh, je vois B
peut être construit à partir d'un A
".
Une autre méthode consiste à utiliser un opérateur de conversion:
class A
{
public:
operator B(void) const;
}
Et le compilateur dira: « Comment puis-je faire un A
B
Oh, je vois A
peut être converti en B
? ». Gardez à l'esprit qu'il est très facile d'abuser de ces codes. Assurez-vous qu'il est logique que ces deux types se convertissent implicitement les uns aux autres.
Si vous ne pouvez pas modifier les définitions de classe pour la classe A ou la classe B, il n'y a pas de bon moyen de le faire. – Omnifarious