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

Fortran Discussion :

Surcharge opérateurs; i++


Sujet :

Fortran

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 11
    Points : 11
    Points
    11
    Par défaut Surcharge opérateurs; i++
    Bonjour

    Je souhaite implementer le ++ correspondant au i++ du C (equivalent de i=i+1)

    J'ai essayé, voila ce que ca donne :

    Code Fortran : 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
     
    program main
      implicit none
     
      integer :: i
     
      interface operator (++)
         function increment(i)
           integer, intent(in)::i
           integer :: increment
         end function increment
      end interface
     
      i=0
      i++
      print*,i
    end program main
     
     
    function increment(i)
      integer, intent(in) :: i
      integer :: increment 
      increment = i+1
    end function increment

    et voici l'erreur que j'obtiens
    Code Erreur compilation : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    francixtra:~/Documents/fortran/operateurs/matrice.matrice$ f95 -c main.f95 
    main.f95:15.2:
     
      i+
     1
    Error: Unclassifiable statement at (1)
    main.f95:10.27:
     
         end function increment
                              1
    Error: Operator interface at (1) conflicts with intrinsic interface

    Je n'ai jamais eu de cours sur la surcharge d'opérateur, j'ai juste appri avec les cours dispo sur internet. J'ai réussi quelques essais plus simples, mais celui-là ne marche pas


    Alors est ce qu'il est possible de faire ceci en Fortran ?
    et si oui, quelles sont mes erreurs ?


    Merci

  2. #2
    Membre éclairé Avatar de genteur slayer
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2002
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Juin 2002
    Messages : 710
    Points : 825
    Points
    825
    Par défaut
    moi j'ai toujours utiliser des opérateur dons le résultat n'était pas stocker dans la variablr de départexemple un produit scalaire...

    je crois que ton prog ne marche pas car il ne sais pas aui dois recevoir le résultat...

    peut-être acvec une subroutine plutot qu'une fonction et tu change directement la valeur de i en le mettant intent(inout)

    du coup il ne cherche pas à renvoyer un résultat...
    il n'y a que ceux qui savent qui ne savent pas qu'ils savent...
    Libere-toi hacker, GNU's Not Unix!!!

  3. #3
    Membre éclairé Avatar de genteur slayer
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2002
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Juin 2002
    Messages : 710
    Points : 825
    Points
    825
    Par défaut
    alors j'ai une partie de réponse:

    l'opérateur ++ est un opérateur unaire qui ne renvoie aucune valeur, ce n'est possible en fortran que lors de la surcharge de cet opéteur, or ++ n'existe pas en fortran donc pas possible:

    lorsque l'on défini un nouvel opérateur celui-ci doit être composé de 1 à 31 lettres encadrée par des . ex .scal.
    et doit toujours renvoyé un résultat donc pour faire un "i++" j'ai peur que cela ne soit pa trop possible...

    aparament après quelques tests, je n'arrive pas à faire de nouvel opérateur unaire, ni à modifier les opérandes...
    il n'y a que ceux qui savent qui ne savent pas qu'ils savent...
    Libere-toi hacker, GNU's Not Unix!!!

Discussions similaires

  1. Portabilitée : Surcharge opérateur de comparaison
    Par Dimitri_87 dans le forum C++
    Réponses: 11
    Dernier message: 15/12/2006, 16h14
  2. Surcharge opérateur +
    Par nunurs83 dans le forum C++
    Réponses: 6
    Dernier message: 31/10/2006, 09h48
  3. [Débutant]Surcharge opérateur +
    Par Geolem dans le forum Débuter
    Réponses: 13
    Dernier message: 05/12/2005, 10h16
  4. surcharge opérateur << et >>
    Par Azharis dans le forum Débuter
    Réponses: 11
    Dernier message: 02/11/2005, 21h22
  5. Surcharge opérateurs
    Par ghostdogpr dans le forum C++
    Réponses: 5
    Dernier message: 18/03/2005, 11h51

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