passer un objet a une fuction c est possible ?

passer un objet a une fuction c est possible ? - C++ - Programmation

Marsh Posté le 23-07-2003 à 13:03:23    

example  
 

Code :
  1. #include "deck.h"
  2. void test (int a, ????)
  3. {
  4. et la je voudrai utiliser le mydeck.
  5. genre mydeck.isempty();
  6. }
  7. int main ()
  8. {
  9. deck mydeck;
  10. blablabla
  11. deck.shuffle();
  12. ect...
  13. }

 
 
comment faire ?  :hello:

Reply

Marsh Posté le 23-07-2003 à 13:03:23   

Reply

Marsh Posté le 23-07-2003 à 13:04:28    

is this intented to be a joke ?

Reply

Marsh Posté le 23-07-2003 à 13:05:37    

chrisbk a écrit :

is this intented to be a joke ?

hélas non :fouyaya:

Reply

Marsh Posté le 23-07-2003 à 13:08:53    

:pfff:  
Ca fait combien de fois qu'on te dit de lire un bouquin/un cours online? :sarcastic:

Reply

Marsh Posté le 23-07-2003 à 13:11:05    

mais j ai des bouquins je veisn de leire la partie classe et j ai pas vu un truc qui ressemblai a ce que je demande.
 
une reponse d une ligne voir d un mot me suffirai
doi je placer le deck mydeck; au debut apres les includes  ?


Message édité par xiluoc le 23-07-2003 à 13:11:54
Reply

Marsh Posté le 23-07-2003 à 13:14:59    

C'est EVIDENT que ton bouquin te dit comment faire ca, c'est le minimum
 
ma reponse : sors toi les doigts du cul

Reply

Marsh Posté le 23-07-2003 à 13:17:38    

xiluoc a écrit :

mais j ai des bouquins je veisn de leire la partie classe et j ai pas vu un truc qui ressemblai a ce que je demande.
 
une reponse d une ligne voir d un mot me suffirai
doi je placer le deck mydeck; au debut apres les includes  ?


et la base tu l'as pas? Genre ke passage de paramètres à une fonction? ca y est pas dans ton bouquin??? :sarcastic:  

Code :
  1. #include "deck.h"
  2.  
  3. void test (int a, deck *pDeck)
  4. {
  5.   blablabla;
  6.   pDeck->majoliefonctionmembrequimodifiemondeckenplus();
  7.   blablabla;
  8. }
  9.  
  10. int main ()
  11. {
  12.     deck Mydeck;
  13.     Mydeck.shuffle();
  14.     test(2, &mydeck);
  15. }


Message édité par skeye le 23-07-2003 à 14:36:03
Reply

Marsh Posté le 23-07-2003 à 13:17:53    

:ouch: deux solutions:
_ Tu abandonne la prog et tu passe à la couture
_ Tu prend ton bouquin, tu commence à la page une et tu le lie jusqu'au bout en essayant d'être attentif.
 
 
Bon si non pour être plus constructif: oui on peut passer des objets à une fonction, en général on fait ça par référence:
 

Code :
  1. void maFonction(MaClass &monObjet)
  2. {
  3.   //Mon code.
  4. }


 
Edit: Merde j'ai fais mon ++Taz aujourd'hui :D
 
Edit2: Ha tien il a fini par arriver :D


Message édité par LetoII le 23-07-2003 à 13:21:35

---------------
Le Tyran
Reply

Marsh Posté le 23-07-2003 à 13:19:30    

y a des jours j'ai vraiment envie d'acheter un beretta...

Reply

Marsh Posté le 23-07-2003 à 13:23:16    

...
j essayer des trucs du genre
 
void test(...., deck *x)
c le & .. desole je maitrise pas encore les pointeurs.
non je ne passerai pas a la couture  
 :whistle:

Reply

Marsh Posté le 23-07-2003 à 13:23:16   

Reply

Marsh Posté le 23-07-2003 à 13:24:11    

(Attention le iench vient du C et donc est pas trop bon en C++ )
 
Pourquoi passer une référence et pas un pointeur ?

Reply

Marsh Posté le 23-07-2003 à 13:24:36    

xiluoc a écrit :

...
j essayer des trucs du genre
 
void test(...., deck *x)
c le & .. desole je maitrise pas encore les pointeurs.
non je ne passerai pas a la couture  
 :whistle:  


 
ben je t'avouerai que je passerai par un pointeur moi.

Reply

Marsh Posté le 23-07-2003 à 13:26:40    

tetedeiench a écrit :

(Attention le iench vient du C et donc est pas trop bon en C++ )
 
Pourquoi passer une référence et pas un pointeur ?


 
depend de ton affaire. d'un point de vue perf c le meme code qui est generé donc pas de soucis de ce coté la.
La reference te garantie (enfin presque, en forcant on arive tjs a tout) que ce que tu recois est valide (envoyer un pointeur bidon est trivial, une reference foireuse moins)
 
 

Reply

Marsh Posté le 23-07-2003 à 13:27:00    

et puis merde, vous avez apris le c++ comme ca sans faire derreur , hop je lis le bouquin d une traite ca y est c magique ...
 
 
et vu comment c est parti je risque d en poser beaucoup des questions jusqu au jours ou ce sera mon tour d aider les noob.
( :whistle: )}

Reply

Marsh Posté le 23-07-2003 à 13:29:13    

tetedeiench a écrit :

(Attention le iench vient du C et donc est pas trop bon en C++ )
 
Pourquoi passer une référence et pas un pointeur ?


 
Pkoi, par ce que un pointeur peut être nul, une référence pointe tjrs sur un objet. En plus d'un point de vue syntaxe on bosse sur une référence comme si on travaillait directement sur l'objet qu'elle désigne ce qui peut être un plus pour certain.


---------------
Le Tyran
Reply

Marsh Posté le 23-07-2003 à 13:29:35    

xiluoc a écrit :

et puis merde, vous avez apris le c++ comme ca sans faire derreur , hop je lis le bouquin d une traite ca y est c magique ...


Non, mais au moins on commence à chercher un peu dans le bouquin avant de demander, non?

Reply

Marsh Posté le 23-07-2003 à 13:30:54    

chrisbk a écrit :


 
depend de ton affaire. d'un point de vue perf c le meme code qui est generé donc pas de soucis de ce coté la.
La reference te garantie (enfin presque, en forcant on arive tjs a tout) que ce que tu recois est valide (envoyer un pointeur bidon est trivial, une reference foireuse moins)
 
 
 


 
Effectivement quand ça arrive c vraiment que le mec à cherché la merde.


---------------
Le Tyran
Reply

Marsh Posté le 23-07-2003 à 13:31:09    

Citation :

En plus d'un point de vue syntaxe on bosse sur une référence comme si on travaillait directement sur l'objet qu'elle désigne ce qui peut être un plus pour certain.


 
je dois avouer ne tjs pas avoir bien cpris l'interet de l'operateur "->" en C.
Il levait quel ambiguité par rapport au "." ?
Pourquoi l'a t'on introduit ?

Reply

Marsh Posté le 23-07-2003 à 13:31:13    

LetoII a écrit :


 
Pkoi, par ce que un pointeur peut être nul, une référence pointe tjrs sur un objet. En plus d'un point de vue syntaxe on bosse sur une référence comme si on travaillait directement sur l'objet qu'elle désigne ce qui peut être un plus pour certain.


 
Ok, je comprends...
 
Mais bon, je sais pas  pourquoi, on m'a tjs répété que les références c'était MAL, alors :D
 
Non, disons que je suis habitué aux pointeurs donc ca peut aller ;)

Reply

Marsh Posté le 23-07-2003 à 13:32:05    

evidemment que si t'as des questions a poser lors de ton apprentissage on te donnera un coup de main pour t'aider a comprendre mais poser des questions de base alors que les reponses se trouvent dans ton bouquin c'est un peu fort.
Et n'oublie pas de faire une recherche avant de poser une question car etant donne que ce sont des questions de base, le forum contient deja surement beaucoup de reponses ;)

Reply

Marsh Posté le 23-07-2003 à 13:32:41    

chrisbk a écrit :

Citation :

En plus d'un point de vue syntaxe on bosse sur une référence comme si on travaillait directement sur l'objet qu'elle désigne ce qui peut être un plus pour certain.


 
je dois avouer ne tjs pas avoir bien cpris l'interet de l'operateur "->" en C.
Il levait quel ambiguité par rapport au "." ?
Pourquoi l'a t'on introduit ?
 


 
ben faire monobjet->truc , c'est pareil que (*monobjet).truc .
 
Car si tu le mets pas, a chaque fois, je me demande si l'étoile s'applique comme :
(*monobjet).truc ou *(monobjet.truc) quand tu l'écris *monobjet.truc .
 
Donc j'utilise ->, c'est plus sur et "parlant".

Reply

Marsh Posté le 23-07-2003 à 13:33:12    

skeye a écrit :


Non, mais au moins on commence à chercher un peu dans le bouquin avant de demander, non?


je cherche un minimum avant d eposer es questions vu qu un forum c est rarement une reponse imediate. (bien que :whistle: )
 
1. index de mon bouquin chapitre class feuilleter en vitesse a la recherche d example
2. google : pass object to function
 

Reply

Marsh Posté le 23-07-2003 à 13:35:07    

chrisbk a écrit :

Citation :

En plus d'un point de vue syntaxe on bosse sur une référence comme si on travaillait directement sur l'objet qu'elle désigne ce qui peut être un plus pour certain.


 
je dois avouer ne tjs pas avoir bien cpris l'interet de l'operateur "->" en C.
Il levait quel ambiguité par rapport au "." ?
Pourquoi l'a t'on introduit ?
 


classe toto
 int entier;
 float flottant;
 
 
toto exemple_toto;
exemple_toto.entier = 5;
 
toto *exemple_prt_toto = new (toto);
exemple_ptr_toto->entier = 5;
 
[:sinclaire]

Reply

Marsh Posté le 23-07-2003 à 13:35:54    

tetedeiench a écrit :


 
Ok, je comprends...
 
Mais bon, je sais pas  pourquoi, on m'a tjs répété que les références c'était MAL, alors :D
 
Non, disons que je suis habitué aux pointeurs donc ca peut aller ;)


+1 pour les pointeurs...j'arrive pas à m'en décrotter... [:skeye]
Et perso je pense qu'un débutant peut être dérouté par 2 fonctions
void test(type &obj) et void test2(type obj) ayant exactement la même implémentation et ne faisant pas tout à fait la même chose, non?

Reply

Marsh Posté le 23-07-2003 à 13:35:55    

LetoII a écrit :


 
Effectivement quand ça arrive c vraiment que le mec à cherché la merde.


 
pas vraiment, tu peux avoir des cas tout a fait balot :D
 

Code :
  1. void pouet()
  2. {
  3. int *tagada = NULL;
  4. truc(tagada);
  5. }
  6. void truc (int *bidule)
  7. {
  8. machin(*bidule);
  9. }
  10. void machin (int &a)
  11. {
  12. a = 20; // [:ciler]
  13. }


 
 

Reply

Marsh Posté le 23-07-2003 à 13:37:33    

chrisbk a écrit :

Citation :

En plus d'un point de vue syntaxe on bosse sur une référence comme si on travaillait directement sur l'objet qu'elle désigne ce qui peut être un plus pour certain.


 
je dois avouer ne tjs pas avoir bien cpris l'interet de l'operateur "->" en C.
Il levait quel ambiguité par rapport au "." ?
Pourquoi l'a t'on introduit ?
 


 
Ben c pas le même cadre d'utilisation en C:
 

Code :
  1. typedef struc maStruct
  2. {
  3. int x;
  4. int y;
  5. } MaStruct;
  6. MaStruct s;
  7. MaStruct *p;
  8. p =&s;
  9. s.x;/*Tu récupère le premier int à l'adresse de s*/
  10. p->y;/*Equivalent à (*p).x tu va à l'adresse que contien p et tu y prend le premier int*/


 
Spas tt à fait le même concept derrière d'où les opérateurs différent (enfin c mon avis perso après faut poser la questino à ceux qu'on fait le language)
 
Une référence en C++ c comme si tu manipulais l'objet lui même, d'ailleur &ref renvoie l'adresse de l'objet référencé par ref, &p r'envoie l'adresse du pointeur, donc la zone mémoire où est stocké l'adresse de l'objet. Spas tt à fait le même concept.


---------------
Le Tyran
Reply

Marsh Posté le 23-07-2003 à 13:37:44    

je sais a quoi sert -> mais pas pkoi il a ete necessaire de l'introduire en C :O
 

Reply

Marsh Posté le 23-07-2003 à 13:38:03    

skeye a écrit :


Et perso je pense qu'un débutant peut être dérouté par 2 fonctions
void test(type &obj) et void test2(type obj) ayant exactement la même implémentation et ne faisant pas tout à fait la même chose, non?


ben la t'es bien con...
 

Code :
  1. void test(type &obj)
  2. {
  3.    //ton implementation
  4.    //...
  5. }
  6. void test2(type obj)
  7. {
  8.   test(obj);
  9. }


 
recopier le code, c'est beurk


Message édité par lorill le 23-07-2003 à 13:38:59
Reply

Marsh Posté le 23-07-2003 à 13:39:01    

leto : Bah le compilo sachant que p est de type pointeur il pourrait tout aussi bien remplacer mon "->" par un "(*p)." sans que g quelque chose a lui dire.  
c ca que je capte pas, pkoi s'encombrer d'un operateur en plus ?

Reply

Marsh Posté le 23-07-2003 à 13:39:29    

chrisbk a écrit :

je sais a quoi sert -> mais pas pkoi il a ete necessaire de l'introduire en C :O
 
 


 
Parce  que (*monobjet).truc c'est chiant a taper et ambigu a la longue.
 
Imagine des objets d'objets d'objets...

Reply

Marsh Posté le 23-07-2003 à 13:39:58    

beaucoup plus simple et lisible a la longue !

Reply

Marsh Posté le 23-07-2003 à 13:40:05    

tetedeiench a écrit :


 
Parce  que (*monobjet).truc c'est chiant a taper et ambigu a la longue.
 
Imagine des objets d'objets d'objets...


 
C moi qui explique mal ou vous voulez pas comprendre ?

Reply

Marsh Posté le 23-07-2003 à 13:40:39    

chrisbk a écrit :

leto : Bah le compilo sachant que p est de type pointeur il pourrait tout aussi bien remplacer mon "->" par un "(*p)." sans que g quelque chose a lui dire.  
c ca que je capte pas, pkoi s'encombrer d'un operateur en plus ?


c'est plus lisible[:sinclaire]

Reply

Marsh Posté le 23-07-2003 à 13:40:55    

chrisbk a écrit :


C moi qui explique mal ou vous voulez pas comprendre ?


le 1.

Reply

Marsh Posté le 23-07-2003 à 13:41:16    

chrisbk a écrit :


 
pas vraiment, tu peux avoir des cas tout a fait balot :D
 

Code :
  1. void pouet()
  2. {
  3. int *tagada = NULL;
  4. truc(tagada);
  5. }
  6. void truc (int *bidule)
  7. {
  8. machin(*bidule);
  9. }
  10. void machin (int &a)
  11. {
  12. a = 20; // [:ciler]
  13. }


 
 
 


 
C ce que je dit, il a cherché la merde, dans la fonction qui reçoit un pointeur il aurait du s'assurer qu'il n'était pas null.
 


---------------
Le Tyran
Reply

Marsh Posté le 23-07-2003 à 13:41:18    

chrisbk a écrit :


 
C moi qui explique mal ou vous voulez pas comprendre ?
 


 
C'est toi qui lit pas nos posts.
 
On te dit que le -> est beaucoup plus pratique et lisible a l'usage.

Reply

Marsh Posté le 23-07-2003 à 13:41:29    

lorill a écrit :


ben la t'es bien con...
 

Code :
  1. void test(type &obj)
  2. {
  3.    //ton implementation
  4.    //...
  5. }
  6. void test2(type obj)
  7. {
  8.   test(obj);
  9. }


 
recopier le code, c'est beurk


Bah c'était juste un pb dans l'absolu, pas un truc qui se fait vraiment...J'ai juste l'impression qu'un débutant à plus de mal à différencier correctement les 2 avec les références qu'avec les pointeurs...

Reply

Marsh Posté le 23-07-2003 à 13:42:26    

je la retente
 
 
toto *a;
...
a.membre = tagada; //echec a la compilation
 
par contre
 
a->membre = tagada; //OK.
 
Maintenant, pkoi "." produit une erreur de syntaxe ? La est ma question. Quel est l'interet de "->" ?  
 

Reply

Marsh Posté le 23-07-2003 à 13:43:41    

ou, si vous preferez, qu'est ce qui empeche le compilo, lorsqu'il recontre :
 
a.membre = ...;
 
de le remplacer tout seul comme un grand par :
 
a->membre = ...;  
 
?

Reply

Marsh Posté le 23-07-2003 à 13:44:34    

chrisbk a écrit :

je la retente


ok, en fait tu te demandes pourquoi ils ont pas pris '.' a la fois dans le cas normal et dans le cas pointeur, j'ai bon ?
 

chrisbk a écrit :


Quel est l'interet de "->" ?  


te rappeler que ta variable est un pointeur

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed