Exeption à l'execution d'une fontions d'une classe managée !!

SpaaJ Messages postés 1 Date d'inscription mardi 3 avril 2007 Statut Membre Dernière intervention 27 mai 2007 - 27 mai 2007 à 05:44
The_Guardian Messages postés 317 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 19 octobre 2007 - 27 mai 2007 à 20:08
La migration vers dotNet est longue et périlleuse ...

J'ai créer une classe managée dans un fichier include.h qui comporte les memes attributs qu'un point avec
une pauvre method qui devrait me set mes 2 attributs.(wahoouu quel puissance !)

ref class pttg{
public:    int x;
               int y;

            pttg(void){}
            ~pttg(void){}

            void setPt(int _x,int _y) {
                this->x    = _x;
                this->y = _y;}

            String^ StringPt(){
            return x+":"+y; }
};

Dans mon Form principal , je crée une instance de la classe pttg , je la gc , puis je lance la fonction setPt

pttg^ pointDep;
pointDep = gcnew pttg();
pointDep->setPt(0,0);

Cela compile nikel ... et à l'execution :
System.NullReferenceException: La référence d'objet n'est pas définie à une instance d'un objet.
 à pttg.setPt(Int32 _x, Int32 _y) dans c:\files\programmation\t3\detect0.270502.test\includes.h:ligne 279
 à Detect01.Form1.InitConfig() dans c:\files\programmation\t3\detect0.270502.test\form1.h:ligne 1038

Ai-je oublié quelquechose ?? dotNet ne m'aime pas ?

L'exemple de classe que je cite ici , est très basic , vous me direz : "mais pouquoi il fait une classe managée pour contenir 2 pauvre entiers ?"  ou encore "mais pourquoi n'utilise t-il pas la classe POINT tout simplement ?"
C'est car  j'ai le même problême avec des classes plus complexes et le fait de voir ce qu'il ne va pas sur cet exemple m'éclairera certainement.

Je remercie d'avance ceux qui auront l'amabilité de se pancher sur ce probleme , ou me redirigé vers un post traitant de ce sujet (je n'ai rien trouvé).

1 réponse

The_Guardian Messages postés 317 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 19 octobre 2007 1
27 mai 2007 à 20:08
Salut,

Je suis pas DOT net, mais peut-etre que t'as pas le droit de faire "this->x" mais juste "x"
ou bien "this.x" au pire
ca depend bref..

=
0