# appeler une methode d'instance depuis une methode de classe



## Genose (3 Novembre 2004)

bonjour , ne connaissant pas trop le Obj-c, je m'adresse  a vous qui etes bien plus d'experience,

  je cherche comment on peut appeler une methode d'instance depuis une methode de classe/.


 j'ai tester 

```
@implementation maclasse
 
 +(id) methodeclassA{
 
 
 ret = [maclasse getinstance];
 
 }
 
 -(int) getinstance{
 
 
 
 
 return OK;
 
 
 }
 
 
 
 
 @end
```
 



 mais sans succes car il cherche un +[maclasse getinstance];

 et ou OK est une variable d'instance. (int ok = 4);

 exilste t'il un moyen de faire cette apple




 merci de lumiere.

 Genose


----------



## molgow (3 Novembre 2004)

Ca n'a absolument aucun sens ! :affraid:
Ce que tu veux faire est impossible !

J'ai pas le temps de te donner une explication, mais reprends les concepts de bases de la programmation orientée objet car visiblement ils ne sont pas acquis.


----------



## mpergand (3 Novembre 2004)

Oui, comme le dit molgow, ce que tu veux faire est impossible  

Tu ne peux pas à partir d'une méthode de classe (static) accéder à des méthodes ou des variables d'instance, c'est un principe général de la programmation objet et effectivement un non sens  

dans ton exemple:

[maclasse getinstance];

à quelle instance veux-tu faire référence ??

L'inverse est bien sûr possible;


```
@implementation Maclasse
 
 +(int) methodeDeClasse{
 
 
 return 1;
 
 }
 
 -(int) appelMethodeDeClasse{
 
 
 return [self methodeDeClasse];

// ou [MaClasse methodeDeClasse];

 
 
 }
```


----------



## ntx (3 Novembre 2004)

Je dirais même plus : si tu essayes cela en C++, ca doit planter à la compile  Objective-C est plus permissif et ca doit planter uniquement à l'execution, non ?


----------



## Genose (4 Novembre 2004)

j'ai pratiquer du c++ et j'ai songer au friend et au public, mais j'ai des difficulté a integrer le concept de cocoa sur cette maniere de proceder, car en c++ je suis un peu loin de mes heures de pratique mais je pense que j'aurais ecrit


  class maclass
  {
  public:

  int mavariable = 0;
  int fonction_public_retournant_un_truc(void)
  {

  if() ...



  }

  int fonctionappeler_public_retournant_un_truc(void)
   {

  return self->fonction_private_retournant_un_truc();



   }

  private:

  int mavariableb = 0;
  int fonction_private_retournant_un_truc(void){


   ;

   return( mavariableb+self->fonction_public_retournant_un_truc());
  }

  }
  int main(void){



  ret = maclasse->fonctionappeler_public_retournant_un_truc();

  cout << ret;
  return 0;
  }




  ca maurais donner un resultat


 voila en fait le pourquoi de la chose, je cherche a retourner une valeur d'une instance de variable mais comme les methode de classe ne peuvent pas y acceder je cherche une maniere d'y parvenir.


  j'en regrette presque le C++, quelqun'un comprend t'il mon dileme.


----------



## ntx (4 Novembre 2004)

Sinon il y a quelque chose dans le genre :

@implementation Maclasse

 +(id) methodeclassA: (MaClass*) maClass
{
  ret = [maclasse getinstance];
}

 -(int) getinstance
{
  return OK;
}

@end


----------

