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 :

Classe contenant propriétés ayant pour type une autre classe


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 7
    Par défaut Classe contenant propriétés ayant pour type une autre classe
    Bonsoir tout le monde

    Débutant en c#, je me suis lancé dans la programmation d'une petite application.
    Mais voila, après pas mal de jours de boulot intensif, et de modifications à tout va, je me retrouve bloqué...
    Lorsque je créer un objet, un des champs de l'objet est de type un autre objet.
    Le problème est qu'il faut que cette objet soit statique, hors, par exemple, l'objet1 possède un champ de type OBJET2, et OBJET2 possède un champ de type OBJET1.getUnChamp().
    Hors, lors de la déclaration de l'objet, VS2010 me dit qu'un initialisateur de champ ne peut pas faire référence à un champ non static. J'ai essayer de mettre OBJET2 en static, mais il faut aussi que je mette OBJET1 en statique...
    Et là, lors du lancement de l'app, le debuggeur me dit que La référence d'objet n'est pas définie à une instance d'un objet.

    Difficile à expliquer :-S
    Je joins le code, si quelqu'un peut m'aider...

    Mes classes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
        public class ObjetM
        {
     
            // Declaration des propriétés des objets
            private string nomO;
            private string typeO;
            private string descriptionO;
            private string idDecO;
            private string idHexO;
            private string iconeO;
            private int testCraftO;
            private craft craftO;}
     
     public class craft
        {
            // Declaration des propriétés des crafts
            private string nomObjetCraft;
            private string objetCraftCompo1;
            private string imageObjetCraftCompo1;
            private string objetCraftCompo2;
            private string objetCraftCompo3;
            private string objetCraftCompo4;
            private string imageCraft;}
    Création de mes objets :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     ObjetM pain = new ObjetM("Pain", "bouffe", "lol", "10", "52", "pain.png", 1, painC);
    static craft painC = new craft("Pain",pain.getIconeO(), pain.getNomO(),"painCraft.png");
    La partie de programme qui plante lors de la mise en static des objets :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
            private void mCraftB( craft blocACrafter)
            {
                pbCraftB.Image = Image.FromFile(blocACrafter.getImageCraft());
            }
    Message d'erreur :
    La référence d'objet n'est pas définie à une instance d'un objet.
    Merci d'avance, et bonne soirée à tous

  2. #2
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Par défaut
    Pourquoi la nécessité du static?

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 7
    Par défaut
    Si je ne passe pas les objets en static, VS2010 me souligne comme suis :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ObjetM pain = new ObjetM("Pain", "bouffe", "lol", "10", "52", "pain.png", 1, painC);
    craft painC = new craft("Pain",pain.getIconeO(), pain.getNomO(),"painCraft.png");
    Et m'affiche le message d'erreur suivant :
    Un initialiseur de champ ne peut pas faire référence au champ, à la méthode ou à la propriété non statique 'Minecraft_data.Menu.pain'

  4. #4
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Par défaut
    Certes mais tu peux te servir d'un constructeur pour effectuer tes taches.
    Peux tu donner poster tout ton code? Notamment ou tu utilises ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ObjetM pain = new ObjetM("Pain", "bouffe", "lol", "10", "52", "pain.png", 1, painC);
    craft painC = new craft("Pain",pain.getIconeO(), pain.getNomO(),"painCraft.png");

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 7
    Par défaut
    Je créer mes objets au début du code du formulaire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    private void mCraftO(craft objetACrafter)
            {
                // Si l'objet s'obtient par craft, on affiche la zone de craft
                gbCraft.Visible = true;
     
                // Affichage de l'image de craft et des composants de craft
                pbCraft.Image = Image.FromFile(objetACrafter.getImageCraft()); 
                lstEntrerC.Items.Add(objetACrafter.getobjetCraftCompo1()); 
                    if (objetACrafter.getobjetCraftCompo2() == null)
                    { }
                    else
                    {
                        lstEntrerC.Items.Add(objetACrafter.getobjetCraftCompo2());
                        if (objetACrafter.getobjetCraftCompo3() == null)
                        { }
                        else
                        {
                            lstEntrerC.Items.Add(objetACrafter.getobjetCraftCompo3());
                            if (objetACrafter.getobjetCraftCompo4() == null)
                            { }
                            else
                            {
                                lstEntrerC.Items.Add(objetACrafter.getobjetCraftCompo4());
                            }
                        }
                    }
            }

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 7
    Par défaut
    Du coup j'ai modifié mon code, je n'ai plus qu'à passer un objet en static et c'est bon

    Merci de l'aide

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2007] Liste déroulante ayant pour critère une autre valeur de la requete
    Par yoyo1664 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 24/03/2011, 08h41
  2. Réponses: 9
    Dernier message: 15/03/2010, 14h55
  3. Réponses: 2
    Dernier message: 06/05/2009, 19h00
  4. Problème pour appeler une méthode d'une autre classe
    Par tse_tilky_moje_imja dans le forum Général Python
    Réponses: 7
    Dernier message: 03/03/2006, 13h33

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