Références à  des int

elfelf Membre
16:48 modifié dans API AppKit #1
Bonjour, je cherche à  faire des une fonction qui retourne une référence a un int sans créer de classe séparée...

Autrement dit si cette fonction est -(int)returnAnInt et que l'int retourné est une var d'instance et est 18 si on fait [self returnAnInt] = 2; ou quelque chose du genre ça set l'int retourner (la var d'instance) à  2...

Réponses

  • WIMPWIMP Membre
    septembre 2005 modifié #2
    Si tu travailles dans la classe MyClass dont ta variable, disons anInt, est une variable d'instance, il n'y a pas besoin de fonction, il suffit de faire:
    anInt = 2;

    Si tu veux modifier cette variable depuis une autre classe AnotherClass, il faut créer dans la classe MyClass un accesseur:

    -(void) setAnInt:(int)x
    {
      anInt = x;
    }

    Ensuite dans AnotherClass, après y avoir installé par IB un outlet myClass
    qui pointe sur MyClass, tu appelles
    [myClass setAnInt:2];

    Si tu veux récupérer la valeur de anInt dans AnotherClass,
    il faut un autre accesseur dans MyClass, du même nom que la variable:

    -(int)anInt
    {
      return anInt;
    }

    et dans AnotherClass:

    anotherInt = [myClass anInt];
  • elfelf Membre
    16:48 modifié #3
    Oui mais ce n'est pas ça mon porb.

    En fait je veux une référence vers un int. un pointeur quoi...

    Une méthode retournerais un pointeur vers cet int (qui est une variable d'instance amsi on ne sais pas laquelle) et que si on fait [self mafctquiretournunpointeurversunint] = 5; l'int deviens cinq
  • WIMPWIMP Membre
    septembre 2005 modifié #4
    dans 1127042743:


    En fait je veux une référence vers un int. un pointeur quoi...

    Une méthode retournerais un pointeur vers cet int (qui est une variable d'instance amsi on ne sais pas laquelle) et que si on fait [self mafctquiretournunpointeurversunint] = 5; l'int deviens cinq


    Si on déclare:
    int *pInt; //pInt est un pointeur sur un int
    int a;
    pInt = &a; //pInt = adresse de a

    pInt est maintenant un pointeur sur a.

    *pInt = 5; //a est maintenant égal à  5.

    La question que tu poses, c'est comme si tu demandais:
    "Je veux envoyer 100 euros à  une personne, mais je ne sais pas laquelle.
    Comment dois-je faire pour qu'après envoi de mon chèque cette personne recoive 100 euros ?"
  • maconnectmaconnect Membre
    16:48 modifié #5
    dans 1127042743:

    Oui mais ce n'est pas ça mon porb.

    En fait je veux une référence vers un int. un pointeur quoi...
    justement, retourne un pointeur. Mais attention, le int pointé doit être global, si il est local a la fonction ça ne marchera évidemment pas.

    static int _int;<br />-(int*)retourneInt<br />{<br /> return &amp;_int;<br />}<br /><br />-(void)maFonctionPrincipale<br />{<br /> int&nbsp; *i=[self retourneInt];<br />(*i)=5;<br />}<br />
    
    ;

    Habituellement la bonne façon de faire ressemble à  ceci:
    static int _int;<br />-(void)modifierInt:(int*)i<br />{<br /> (*i)=5;<br />}<br /><br />-(void)maFonctionPrincipale<br />{<br />&nbsp; [self modifierInt:&amp;_int];<br />}
    
Connectez-vous ou Inscrivez-vous pour répondre.