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

Signaler
Messages postés
1
Date d'inscription
mardi 3 avril 2007
Statut
Membre
Dernière intervention
27 mai 2007
-
Messages postés
317
Date d'inscription
vendredi 25 mai 2007
Statut
Membre
Dernière intervention
19 octobre 2007
-
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

Messages postés
317
Date d'inscription
vendredi 25 mai 2007
Statut
Membre
Dernière intervention
19 octobre 2007

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..

=