Cela fait longtemps que je n'ai pas écrit de code C++ et je me sens un peu bête. J'ai écrit le code qui est similaire à, mais pas exactement, le code ci-dessous:Comment convertir une classe parente en classe enfant
class Parent
{
...
};
class Child : public Parent
{
...
};
class Factory
{
static Parent GetThing() { Child c; return c; }
};
int main()
{
Parent p = Factory::GetThing();
Child c1 = p; // Fails with "Cannot convert 'Parent' to 'Child'"
Child c2 = (Child)p; // Fails with "Could not find a match for 'TCardReadMessage::TCardReadMessage(TCageMessage)'"
}
Je sais que cela est censé être simple mais je ne sais pas ce que je fais mal.
Je ne comprends pas ce que Factory fait. Il semble que cela renvoie une variable locale. Cet objet est-il valide? – John
@John: renvoie une copie d'un objet local. Le retour est en valeur, donc peu importe si l'original meurt après (et bien sûr, il le fait). Rien à redire à cela, sinon que ce n'est pas approprié pour une fonction d'usine ... –
Oui, la méthode GetThing de la classe Factory retourne une variable locale. Ce qui apparemment ne fera pas ce que je veux. Je devrais utiliser des pointeurs à la place. Au moins selon les réponses ci-dessous. – Mykroft