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

Langage Java Discussion :

Passage de C++ à Java (mot clef extern)


Sujet :

Langage Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 46
    Points : 27
    Points
    27
    Par défaut Passage de C++ à Java (mot clef extern)
    Je dispose d'un code C++ que je veux passer en Java mais je bute sur l'utilisation d'une instance déclarée avec Extern dans un gros fichier header et créer dans le main.

    grosHeader.h:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    extern monType* monInstance;
    main.cpp:
    J'ai penser à 2 solutions:
    * Passer en paramètre à la création de chaque objet utilisant monInstance la référence sur cet objet. Ce n'est pas vraiment praticable car entre autres 'en ai une tripoté.

    *Déclarer toutes les méthodes et les variables en static pour pouvoir appeler le tout par la classe mais à long terme je pourrais avoir plusieurs thread qui feront presque la même chose mais qui devront avoir des valeurs différentes.

    Donc que faire?

  2. #2
    Membre émérite
    Avatar de gifffftane
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 354
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 2 354
    Points : 2 582
    Points
    2 582
    Par défaut
    Déjà, nous expliquer ce que veut dire le mot clef extern en c++ Ici, on ne connait pas forcément le c++, hein.

    De ce que je peux subodorer que cela suppose, tu aurais peut être deux solutions :
    • placer cette chose dans les propriétés systèmes,
    • placer cette chose dans un ThreadLocal.

    Déjà, regarde ce qui te semble le mieux, pourquoi, si tu arrives à le faire fonctionner, et si tu n'y arrives pas, dis-le nous, à partir de là on pourra te conseiller sur la voie que tu auras choisie.

  3. #3
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Points : 7 084
    Points
    7 084
    Par défaut
    Le mot clé 'extern' permet de valider la syntaxe en faisant croire qu'un "truc" (type, variable, macro, etc.) a été déclaré. Ainsi on a pas d'erreur de compilation dans le cadre d'une compilation séparée (.o .so .dll). La liaison sera fait soit dynamiquement (.so .dll), soit à la consitution de l'éxécutable à partir des .o

    Dans le cadre de Java ce système n'existe pas, pour qu'une classe compile, le compilateur doit connaître les classes appélées. Pour son éxécution, la liaison est dynamique.

  4. #4
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par Nemek
    Le mot clé 'extern' permet de valider la syntaxe en faisant croire qu'un "truc" (type, variable, macro, etc.) a été déclaré. Ainsi on a pas d'erreur de compilation dans le cadre d'une compilation séparée (.o .so .dll). La liaison sera fait soit dynamiquement (.so .dll), soit à la consitution de l'éxécutable à partir des .o
    Et au passage cela peut vite devenir un beau "merdier" lorsqu'on tombe sur un conflit de nom...

    En java on utiliserait une variable static :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public class MaClasse {
        public static int MaVar = 0;
    }
    a++

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 46
    Points : 27
    Points
    27
    Par défaut
    Merci de vos réponses.

    Finalement je me suis résolu à utiliser une variable de classe.
    A ce propos, si je fais tourner plusieurs instances de mon programme est ce que cette variable de classe sera partagé par les multiples instances du programme ou cela est il bien séparé dans la JVM?

  6. #6
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Non car un programme = une JVM de lancée pour le moment.
    Le seul moyen de s'assurer de l'unicité de ta classe serait de faire communiquer les différentes JVM entre elles au moyen de sockets ou de RMI

Discussions similaires

  1. Mot-clef extern
    Par lucieb dans le forum C++
    Réponses: 5
    Dernier message: 20/03/2015, 09h19
  2. le mot clef extern ?
    Par ikuzar dans le forum Débuter
    Réponses: 4
    Dernier message: 30/07/2009, 14h50
  3. clefs externe sous access
    Par mahboub dans le forum Access
    Réponses: 2
    Dernier message: 24/10/2005, 22h00
  4. mot clef sql pour nom de champ
    Par bobinou007 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 12/10/2004, 13h21

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