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 :

Problème de compilation


Sujet :

C#

Vue hybride

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

    Informations forums :
    Inscription : Avril 2011
    Messages : 6
    Par défaut Problème de compilation
    Bonjours, Je suis actuellement en train d'apprendre le language C#.

    Cependant, j'ai un problème de compilation que je n'arrive pas à résoudre :

    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
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
     
    namespace ConsoleApplication1
    {
        class Program
        {
            static void Main(string[] args)
            {
                int number1 = 2, number2 = 3, number3 = 0;
                Multiply(number1, number2, ref number3);
                Console.WriteLine(number3);
                Console.Read();
            }
            int Multiply(int copyNumber1,int copyNumber2, ref int number3)
            {
                number3 = copyNumber1 * copyNumber2;
                return number3;
            }
        }
    }
    Error 1 An object reference is required for the non-static field, method, or property 'ConsoleApplication1.Program.Multiply(int, int, ref int)' Line 13
    Qu'est ce qui ne va pas ?

  2. #2
    Membre chevronné
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2009
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Février 2009
    Messages : 317
    Par défaut
    Bonjour,

    Tu as oublié le static dans la déclaration de ta méthode Multiply :
    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
     
    namespace ConsoleApplication1
    {
        class Program
        {
            static void Main(string[] args)
            {
                int number1 = 2, number2 = 3, number3 = 0;
                Multiply(number1, number2, ref number3);
                Console.WriteLine(number3);
                Console.Read();
            }
            static int Multiply(int copyNumber1, int copyNumber2, ref int number3)
            {
                number3 = copyNumber1 * copyNumber2;
                return number3;
            }
     
        }
    }

  3. #3
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    La réponse par Aeronia est exacte, mais il faut ajouter que appeler une méthode non statique suppose une réference à l'instance de la classe qu'elle contient.

    Ici, tu appelles la méthode depuis une méthode statique, donc tu as deux possibilités :

    - réceupérer l'instance de la classe Program (pas beaucoup d'interêt ici).
    - ou rendre la méthode appelée statique. (soluton préconisée - à juste titre - par Aeronia).

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

    Informations forums :
    Inscription : Avril 2011
    Messages : 6
    Par défaut
    Merci pour vos réponses.

    suppose une réference à l'instance de la classe qu'elle contient.
    Je n'ai pas compris ce passage.

    C'est quoi une instance et une classe ?

  5. #5
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par Marvinr Voir le message
    Je n'ai pas compris ce passage.

    C'est quoi une instance et une classe ?
    Là, il est impératif de lire un tutoriel sur la POO avant d'attaquer C#, car sinon tu ne vas pas aller bien loin. ce sont des concepts de base pour tout langage objet.

    Fouille sur le site, il y en a plein.


    Commence par exemple par là : http://broux.developpez.com/articles...ter-en-dotnet/

  6. #6
    Membre émérite Avatar de kheironn
    Homme Profil pro
    Chef de projets technique C# / MVC / .Net
    Inscrit en
    Février 2007
    Messages
    822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets technique C# / MVC / .Net
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2007
    Messages : 822
    Par défaut
    Citation Envoyé par Bluedeep Voir le message
    Là, il est impératif de lire un tutoriel sur la POO avant d'attaquer C#, car sinon tu ne vas pas aller bien loin. ce sont des concepts de base pour tout langage objet.

    Fouille sur le site, il y en a plein.


    Commence par exemple par là : http://broux.developpez.com/articles...ter-en-dotnet/
    Je dirais plutôt "orienté objet..." (d'où POO) Les vrais langages full object sont rarissimes...

    Sinon, ne serait-ce que les bases en lisant ça. Après tu trouveras une tripotée de tuto. Mais je trouve étrange de faire du C# sans la moindre notion de POO...
    Ce bouquin est pas mal pour commencer.

  7. #7
    Membre Expert
    Avatar de jbrasselet
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Mars 2006
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 022
    Par défaut
    Essaye de lire un tutoriel sur la programmation objet. Tu vas en avoir besoin pour comprendre tout cela.

  8. #8
    Membre émérite Avatar de kheironn
    Homme Profil pro
    Chef de projets technique C# / MVC / .Net
    Inscrit en
    Février 2007
    Messages
    822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets technique C# / MVC / .Net
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2007
    Messages : 822
    Par défaut
    N'oublie pas si les réponses te conviennent.

    visiblement tu as d'autres questions.

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

    Informations forums :
    Inscription : Avril 2011
    Messages : 6
    Par défaut
    Bonjours, j'ai à nouveau des problèmes de compilation (le tuto que je suis en train de lire n'est pas trés bien expliqué tout compte fait !) :

    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
     
    namespace ConsoleApplication1
    {
        class Program
        {
            static void Main(string[] args)
            {
     
            }
        }
        public class Person
        {
            private string m_name;
            public string Name
            {
                get { return m_name; }
                set { m_name = value; }
            }
     
            private ushort m_age;
            public ushort Age
            {
                get { return m_age; }
                set { m_age = value; }
            }
     
            public Person()
            {
                Console.WriteLine("Nouvelle personne créée.");
            }
     
            public Person(string name, ushort age)
            {
                this.m_age = age;
                this.m_name = name;
                Console.WriteLine("Nouvelle personne créée. Cette personne s'appelle " + name + " et a " + age + " ans.");
            }
     
            ~Person()
            {
                Console.WriteLine("Objet détruit.");
            }
     
            public void SayHi()
            {
                Console.WriteLine("Bonjour! Je m'appelle " + this.Name + " et j'ai " + this.Age + " ans.");
            }
            Person toto = new Person("toto", 15);
            toto.SayHi();
            Console.Read();
        }
     
    }
    Error 1 Invalid token '(' in class, struct, or interface member declaration Line 53
    Error 2 Invalid token '(' in class, struct, or interface member declaration Line 54

  10. #10
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Tout à fait normal, tu mets du code en dehors d'une méthode. Une classe ne contient que des déclarations, pas de code directement dans la classe.

  11. #11
    Membre éprouvé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2006
    Messages
    1 627
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 627
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Person toto = new Person("toto", 15);
            toto.SayHi();
            Console.Read();
    Ce code est au mauvais endroit, il doit être dans une fonction, et toi tu le mets dans la classe. une classe ne peut comprendre que des définitions de membres et de fonctions, mais ne peut pas contenir de code à exécuter directement.

    L'instanciation de Person est légale, car il s'agit d'une déclaration, mais les deux appels successifs sont illégaux. Vu ton post, ce code doit se trouver dans le main !

    Edit : grilled

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

    Informations forums :
    Inscription : Avril 2011
    Messages : 6
    Par défaut
    Vous pouvez me montrer en faisant un copier-modifier-coller de mon code svp.

  13. #13
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par Marvinr Voir le message
    Vous pouvez me montrer en faisant un copier-modifier-coller de mon code svp.


    CTKI bug

  14. #14
    Membre émérite Avatar de kheironn
    Homme Profil pro
    Chef de projets technique C# / MVC / .Net
    Inscrit en
    Février 2007
    Messages
    822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets technique C# / MVC / .Net
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2007
    Messages : 822
    Par défaut
    On touche vraiment aux bases ici...

    Dans une classe on peut déclarer des variables, propriétés, méthodes, classes imbriquées, (je dois en oublier)... Les appels de méthodes doivent se faire dans une autre méthode. Ton application console contient un point d'entrée la méthode Main(...) qui sera la première exécutée et fera les appels aux autres méthodes. Tous les appels aux méthodes doivent se faire ici ou dans les méthodes "suivantes" (selon l'ordre et le niveau d'appel)...

    Enfin, je suis étonné que personne n'ait fait de remarque sur le destructeur...

  15. #15
    Membre éprouvé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2006
    Messages
    1 627
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 627
    Par défaut
    Citation Envoyé par Arnard Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Person toto = new Person("toto", 15);
            toto.SayHi();
            Console.Read();
    .......
    Vu ton post, ce code doit se trouver dans le main !

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

Discussions similaires

  1. problème de compilation sous visual C++
    Par fabmili dans le forum MFC
    Réponses: 4
    Dernier message: 08/02/2004, 19h52
  2. problème de compil devc++ socket
    Par stefdem dans le forum Autres éditeurs
    Réponses: 2
    Dernier message: 11/12/2003, 11h33
  3. Réponses: 1
    Dernier message: 29/10/2003, 12h16
  4. Problème de compilation de la DLL du XMLRad
    Par [DreaMs] dans le forum XMLRAD
    Réponses: 2
    Dernier message: 16/04/2003, 16h46
  5. Réponses: 1
    Dernier message: 27/05/2002, 01h44

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