IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

[Débutant] Problème d'initialisation / utilisation de tableau


Sujet :

C#

  1. #1
    Membre émérite
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 764
    Points : 2 705
    Points
    2 705
    Par défaut [Débutant] Problème d'initialisation / utilisation de tableau
    Bonjour,

    Désolé pour cette question bateau...

    J'ai ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    maGrille.corners[0] = new On3dPoint();
    maGrille.corners[0].x = 1.0;
    maGrille.corners[0].y = 2.0;
    maGrille.corners[0].z = 3.0;
    ..et j'obtiens une erreur d'exécution à la ligne 2 :
    La référence d'objet n'est pas définie à une instance d'un objet.
    Les x,y, et z sont des doubles.

    Le constructeur de maGrille a bien fait un new sur le membre corners.

  2. #2
    Membre éprouvé
    Avatar de Gurdil le nain
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2009
    Messages
    468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2009
    Messages : 468
    Points : 1 111
    Points
    1 111
    Par défaut
    Pourquoi ne pas utiliser une Collection generique du type List(Of On3dPoint) qui sont vraiment plus souples que les tableaux ?

    A mon avis, c'est ton tableau qui n'est pas bien créé...fais voir son initialisation stp.

  3. #3
    Membre émérite
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 764
    Points : 2 705
    Points
    2 705
    Par défaut
    Pendant que tu répondais, j'étais en train de rajouter le message d'erreur. :-)

    En fait, ce n'est pas un tableau, mais une classe On3dPointArray avec un opérateur crochet.

  4. #4
    Expert éminent
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Points : 7 660
    Points
    7 660
    Par défaut
    Lorsque vous rencontrez une exception NullReferenceException, ce qui est ton cas, commencez par débuger en pas à pas et regardez un peu la valeur/contenu des différentes variables, collections... histoire de comprendre ce qu'il se passe. Visual Studio offre tout ce qu'il faut pour ça après tout et c'est simple d'utilisation. Ca éviterait la grande majorité des sujets liés à une NullReferenceException

    Donc commence par débuger avec Visual Studio, car avec le code que tu donnes aucune raison d'avoir cette exception à priori. En effet si maGrille.corners[0] = new On3dPoint(); passe bien alors il n'y a aucune raison pour que maGrille.corners[0] soit null.

    Sinon tu peux essayer d'initialiser ton objet On3dPoint avant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    On3dPoint point = new On3dPoint();
    point.x = 1.0;
    point.y = 2.0;
    point.z = 3.0;
    maGrille.corners[0] = point;
    pour voir ce qu'il se passe.

  5. #5
    Membre émérite
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 764
    Points : 2 705
    Points
    2 705
    Par défaut
    En fait, je suspecte la classe On3dPointArray (ces classes On sont un fait issues d'une bibliothèque externe C++ wrappée dans du .Net).

    Celle-ci a un de ses constructeurs qui prend un paramètre, dans lequel on indique une taille.

    Comme cette classe possède une fonction reserve(), je pense qu'on indique une taille maximale avant réallocation de mémoire, comme pour la structure vector dans la STL du C++. D'ailleurs, le membre m_count de mon instance m'indique 0.

    Cela signifierait également que l'opérateur crochets ne fonctionnerait pas comme prévu en écriture. Il existe en revanche une fonction append().

    Inutile de dire que ces éléments (constructeur, opérateur...) ne sont pas documentés...

Discussions similaires

  1. problème d'initialisation d'un tableau de structure
    Par hamma2 dans le forum Débuter
    Réponses: 1
    Dernier message: 08/03/2010, 19h26
  2. Réponses: 20
    Dernier message: 15/05/2009, 11h50
  3. Problème d'initialisation d'un tableau
    Par Premium dans le forum C
    Réponses: 13
    Dernier message: 31/05/2006, 14h48
  4. [JUnit] [Débutant] Problème avec l'utilisation de JUnit
    Par Juanito-Toto dans le forum Tests et Performance
    Réponses: 2
    Dernier message: 22/12/2005, 16h49
  5. [débutant]problèmes d'affichage dans un tableau
    Par Hastur dans le forum Balisage (X)HTML et validation W3C
    Réponses: 12
    Dernier message: 16/08/2005, 12h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo