Forum Clubic

[C#] [POO] Casting d'une classe de base vers classe derivée

[#e2ff00]Bonjour à tous,

J’ai une petite question toute bete, elle concerne l’héritage et le casting.

Voila la déclaration de mes classes : (c’est un exemple tout simple, mais c pour comprendre le principe)

[c#]class MaClasseBase
{
public MaClasseBase()
{
MessageBox.Show(“Constructeur Base par défaut”);
}
}

class MaClasseDerivee : MaClasseBase
{
public MaClasseDerivee() : base()
{
MessageBox.Show(“Constructeur Derivée par défaut”);
}
}[/C#]

Dans un main : je veux faire le casting MaClasseBase -> MaClasseDerivee

A la compil ca passe, mais a l’execution il me dis que le casting est invalide !!

MaClasseBase maBase = new MaClasseBase();

MaClasseDerivee maDerive = new MaClasseDerivee();

maDerive = (MaClasseDerivee)maBase;

Comment faire merci !!!

.NET semble interdire totalement ce genre de truc. Je n’ai jamais trouvé de solution élégante à ce problème.

Ca marche en C++ ou dans d’autre langages orientés objets ca ? Suis pas sur. L’inverse devrait fonctionner par contre.

Il doit y avoir possibilité de faire ça en surchargeant l’opérateur de casting. Je n’ai pas le temps de voir ça en détail, mais je te suggere de jeter un coup à cette page, il y a peut-être ce qu’il faut :
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconimplementingtypeconverter.asp