Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
650 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Renvoi d'un tableau

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Renvoi d'un tableau

n°1102700
Aldarek
Posté le 31-05-2005 à 11:44:27  profilanswer
 

Bonjour à tous, je cherche le moyen de renvoyer un tableau pour ensuite accéder à ses différents éléments. J'ai trouvé comment retourner un seul élément du tableau mais pas le tableau tout entier. Quelqu'un pourrait il m'aider svp? Merci d'avance  :jap:  
Aldarek

mood
Publicité
Posté le 31-05-2005 à 11:44:27  profilanswer
 

n°1102727
Elmoricq
Modérateur
Posté le 31-05-2005 à 12:09:04  profilanswer
 

Je ne comprends pas ce que tu veux dire.
 
Par exemple si ton tableau est de type (unsigned *), ben tu retournes un (unsigned *) ?

n°1102743
Llialn
Posté le 31-05-2005 à 12:22:13  profilanswer
 

Et bien, je veux retourner un tableau d'entier mais lorsque je veux afficher ses valeurs dans une autres méthode d'une autre classe (les classes sont liées par l'héritage), je n'arrive pas à avoir accès à tous les éléments du tableau, mais que au premier.  :pfff:

n°1102787
Aldarek
Posté le 31-05-2005 à 12:43:15  profilanswer
 

Désolé, j'ai utilisé un autre utilisateur mais j'attends toujours votre réponse :P  :pt1cable:

n°1102823
Elmoricq
Modérateur
Posté le 31-05-2005 à 13:15:53  profilanswer
 

Poste la partie de ton code qui pose problème, pour voir ?

n°1102847
Taz
bisounours-codeur
Posté le 31-05-2005 à 13:34:58  profilanswer
 

c'est n'importe quoi. Déjà il ne faut pas utiliser un machin*, mais un std::vector<>. De plus, pour coller à l'esprit du C++, on n'utilise pas de valeurs de retour dans ce cas. le prototype de ta fonction serait donc
 
 
void f(..., std::vector<unsigned> &out);
 

n°1102879
Llialn
Posté le 31-05-2005 à 13:57:51  profilanswer
 

Je comprend rien du tout à ce que tu me met Taz, j'ai jamais entendu parlé de ce vector, pourrais tu être un peu plsu explicite stp? :)
 
Voici le code :
int & Action::renvoyer()
{
 return *objet;
}
 
Et la fonction ou j'apelle cette méthode :
 
void Tamagotchi::doAction(int IDAction)
{
 int modificateur[5];
 modificateur[0] = ArrayAction[IDAction].renvoyer();
 cout<< modificateur[0]<<endl;
}
 
Merci d'avance

n°1102939
Llialn
Posté le 31-05-2005 à 14:34:58  profilanswer
 

Taz, j'ai utilisé le vector comme tu me l'avais demandé mais il me sort une erreur, la voici:
error C2440: 'return' : cannot convert from 'class std::vector<int,class std::allocator<int> >' to 'int'
 
Voici aussi la syntaxe de ce que j'ai fait :
 std::vector<int> objet;
 objet.resize(5); //On modifie la taille du tableau à 5 éléments et tous ces éléments sont égaux à 0
 cout << objet.size() << '\n';  //Affiche la taille
 
Merci de m'aider parce que là  :pt1cable:  :pt1cable:  :pt1cable:  

n°1102947
skelter
Posté le 31-05-2005 à 14:48:14  profilanswer
 

tu retourne un vector, verifies les types ! montres du vrai code

n°1102950
Llialn
Posté le 31-05-2005 à 14:53:36  profilanswer
 

ok voici le code :
en ce qui concerne les méthodes de la classe:
 
Action::Action()
{
 objet.resize(5); //On modifie la taille du tableau à 5 éléments et tous ces éléments sont égaux à 0
 //cout << objet.size() << '\n';  //Affiche la taille
}
 
int  Action::renvoyer()
{
 return objet[5];
}
 
la classe en elle même:
 
#ifndef ACTION_H
#define ACTION_H
#include <iostream.h>
#include <vector>
 
 
class Action
{
public:
  std::vector<int> objet;
public:
 
 Action();
 int  renvoyer();
 
 
};
 
#endif
 
Et voici la méthode qui apelle renvoyer :
 
void Tamagotchi::doAction(int IDAction)
{
 int modificateur;
 modificateur = ArrayAction[IDAction].renvoyer();
 cout<< modificateur<<endl;
}
 
Voilà mon code, merci de m'aider  :)  :)

mood
Publicité
Posté le 31-05-2005 à 14:53:36  profilanswer
 

n°1102980
skelter
Posté le 31-05-2005 à 15:05:18  profilanswer
 

Action::Action() : objet(5) {}
 
std::fill pour initialiser par exemple
 
et le code de renvoyer ? si action::renvoyer retourne 'int' et que tu retourne un vector<int> il y a un probleme au niveau du type, la voila la reponse


Message édité par skelter le 31-05-2005 à 15:20:31
n°1102989
Llialn
Posté le 31-05-2005 à 15:09:39  profilanswer
 

Quelle est la syntaxe parce que je met vector<int> en valeur retournée et il me met un max d'erreurs.
Je ne comprend pas très bien la première ligne, tu pourrais t'expliquer stp?
Merci :P

n°1102994
Llialn
Posté le 31-05-2005 à 15:17:10  profilanswer
 

Sinon j'ai dit que le résultat de la valeur retournée était aussi un vector comme ceci :
 
 std::vector<int> modificateur;
 modificateur.resize(5);
 modificateur = ArrayAction[IDAction].renvoyer();
 cout<<modificateur<<endl;
 
Suite à la compilation, il me met les erreures suivantes :
 
binary '=' : no operator defined which takes a right-hand operand of type 'int' (or there is no acceptable conversion)
binary '<<' : no operator defined which takes a right-hand operand of type 'class std::vector<int,class std::allocator<int> >' (or there is no acceptable convers
 
Quelqu'un pourrait il m'expliquer, ou me dire tout simplement que mon idée n'était pas bonne au départ... :)

n°1102998
Taz
bisounours-codeur
Posté le 31-05-2005 à 15:18:53  profilanswer
 

objet( std::vector<int>(5) )  
 
beurk, pourquoi tu veux pas utiliser objet(5) ?

n°1103001
skelter
Posté le 31-05-2005 à 15:19:04  profilanswer
 

tu retourne "std::vector<int> &" ou "const std::vector<int> &" (avec action::renvoyer en const) ou une copie en passant le vector retour par reference, c'est a toi de voir
la premier ligne c'est la construction de "objet"

n°1103002
skelter
Posté le 31-05-2005 à 15:19:56  profilanswer
 

Taz a écrit :

objet( std::vector<int>(5) )  
 
beurk, pourquoi tu veux pas utiliser objet(5) ?


 
carrement ! je me complique (j'edit)

n°1103014
Llialn
Posté le 31-05-2005 à 15:30:04  profilanswer
 

Les gars franchement je comprend rien à ce que vous faites, en ce qui concerne la construction de objet, c'est pas mieux de le faire dans la classe?
Et ensuite on le défini dans le constructeur non?  
 
Sinon même si j'ai pas mis ca, tout marche bien mis à part que quand je veux afficher les valeures modifiées, elles sont égales à 0.
Voici la syntaxe, dites moi si il y a une erreur :  
 
void Tamagotchi::doAction(int IDAction)
{
 /*std::vector<int> modificateur;
 modificateur.resize(5);*/
 propriete = ArrayAction[IDAction].renvoyer();
 cout<<propriete[0]<<endl;
}
 
Propriete étant un vector aussi :)

n°1103021
Llialn
Posté le 31-05-2005 à 15:34:49  profilanswer
 

Soit dit en passant, a t'on le droit de faire ceci
 
ArrayAction[0]=*new Manger;
 
ArrayAction étant un pointeur de type Action qui est une de mes classes


Message édité par Llialn le 31-05-2005 à 15:37:30
n°1103032
skelter
Posté le 31-05-2005 à 15:41:16  profilanswer
 

il n'y a pas de "a t'on le droit de faire ceci ", des fois il faut reflechir ??

n°1103036
Llialn
Posté le 31-05-2005 à 15:42:59  profilanswer
 

Je suis bien d'accord, mais étant un peu nul en C++ et qu'on me demande de faire un projet de cinglé  :pt1cable:  :pt1cable: , je demande l'aide de personnes sachant se démerder, et c'est pourquoi tout ce qui me parait louche, je demande si c'est bon ou pas.
Merci de me répondre :)

n°1103045
skelter
Posté le 31-05-2005 à 15:49:22  profilanswer
 

ArrayAction[0]=*new Manger; compile sans doute si il n'y a pas de probleme de type mais c'est pas bon (tu ne peux pas liberer le Manger alloue dynamiquement) et inutile


Message édité par skelter le 31-05-2005 à 15:49:51
n°1103077
Llialn
Posté le 31-05-2005 à 16:11:14  profilanswer
 

Il ne me met pas d'erreur, mais si tu dis que c'est pas bon, c'est peut être pour ca que j'obtiens de la merde ensuite.
En fait, je t'explique rapidement, j'ai une classe manger qui hérite d'action, et cette classe action, elle renvoi un vector, ce sur quoi je suis depuis un bout de temps maintenant :). Ensuite dans ma classe "principale", je crée un tableau d'actions qui à chaque élément correspond une action par exemple ArrayAction[0] c'est manger etc
Et mon tableau ArrayAction est déclaré comme ceci dans ma classe:
 
Action *ArrayAction;
 
Ensuis dans la constructeur: ArrayAction= new Action[5];
et le destructeur : delete[] ArrayAction;
 
Et donc pour dire que ArrayAction[0] correspond à Manger, j'ai fait comme ceci : ArrayAction[0]=*new Manger;
 
Mais tu me dis que ca n'est pas bon, as tu une idée alors?
 
Merci beaucoup pour ton aide Skelter :D :D
 

n°1103091
skelter
Posté le 31-05-2005 à 16:23:13  profilanswer
 


Citation :


Il ne me met pas d'erreur, mais si tu dis que c'est pas bon, c'est peut être pour ca que j'obtiens de la merde ensuite.


 
c'est pas bon mais ca ne cause pas d'erreur, tu alloue dynamiquement un objet et tu le
copie mais tu ne le libere pas
 

Citation :


Action *ArrayAction;
 
Ensuis dans la constructeur: ArrayAction= new Action[5];
et le destructeur : delete[] ArrayAction;


 
c'est loin d'etre aussi simple que ca, fais plutot std::vector<Action> ArrayAction;
 

Citation :


Et donc pour dire que ArrayAction[0] correspond à Manger


 
tu veux faire du polymorphisme ?

n°1103106
Llialn
Posté le 31-05-2005 à 16:27:47  profilanswer
 

tu veux faire du polymorphisme ?
 
Kézako??? Moi pas comprendre toi quoi me dire  :pt1cable:  :pt1cable:  :pt1cable:  
 
Ca va changer quoi que je fasse un vector pour ArrayAction??
 
Merci :)

n°1103121
skelter
Posté le 31-05-2005 à 16:36:55  profilanswer
 

ca sera beaucoup plus simple et plus sur !
le polymorphisme c'est ce que tu veux faire mais avec ton niveau ca va etre dur

n°1103131
Llialn
Posté le 31-05-2005 à 16:41:36  profilanswer
 

Alors pour le fait que ca soit plus simple ok pourquoi pas mais du coup il me met des erreurs encore
 
 ArrayAction.resize(5);
 ArrayAction[0]=new Manger; //à cette ligne : error C2100: illegal indirection et aussi error C2440: '=' : cannot convert from 'class Manger *' to 'int'
 doAction(0);
 
Je pense que c'est du à une mauvaise untilistaion du polymorphisme si j'ai bien compris.
 
Il me met aussi cette erreur si comprend quelque chose :  
 
propriete = ArrayAction[IDAction].renvoyer(); //:error C2228: left of '.renvoyer' must have class/struct/union type
 
Merci skelter

n°1103152
Taz
bisounours-codeur
Posté le 31-05-2005 à 16:50:47  profilanswer
 

bon ben je vais aller me pendre ... des gars qui comprennent rien au typage à ce point j'ai jamais vu ça. Non, un pointeur n'est pas un tableau, une instance n'est pas un int ...

n°1103175
Llialn
Posté le 31-05-2005 à 16:58:54  profilanswer
 

Plutot que d'aller te pendre à cause de la stupidité de certains que tu trouves affligeante, peut être essaierai tu de m'aider comme essaies de le faire gentiment skelter depuis maintenant un après midi tout entier. Parce que les remarques du genre des mecs comme ça, j'en ai pas besoin, mis à part pour tout mettre direction la corbeille. Merci Taz.
Je suis étudiant en BTS et pour le seul gros projet que l'on avait à faire, on nous a donné au moins 10 pages d'analyse avant d'attaquer le code, et là je suis en stage et on me dit de réaliser un projet qui fait deux fois la taille du seul que j'ai fait avec pour seule analyse un doc word de 3 pages que j'ai du faire moi même, donc si vous pouviez être indulgent ca serait sympa. Merci les amis  :jap: (j'attends votre aide)

n°1103189
skelter
Posté le 31-05-2005 à 17:04:09  profilanswer
 

Taz est sec mais il n'a pas tord, il te manque beaucoup trop de base pour qu'on puisse t'aider efficacement
si tu es en stage lis des cours, des faq sur le c++ ca sera beaucoup moins de temps perdu que de buter sur chaque message d'erreur de ton compilateur "cannot convert..." :)

n°1103199
Llialn
Posté le 31-05-2005 à 17:08:32  profilanswer
 

Je suis tout à fait d'accord avec toi skelter et avec taz aussi mais il y a d'autres facon de les dire. Je vais donc me retirer pour aller lire comme tu l'a dit des FAQ et autres tutoriaux pour essayer de comprendre mais là ca fait 3 jours que je rame comme jamais et je commence vraiment à en avoir ras le bol, mais bon, on fait pas toujours ce qu'on veux. En tout cas, merci de m'avoir aider. Lorsque je serai aussi doué que vous, j'aiderai les petits nouveaux comme moi qui galèrent sur des conneries. Salut à tous  :hello:   :hello:

n°1103231
Taz
bisounours-codeur
Posté le 31-05-2005 à 17:30:18  profilanswer
 

c'est pas une FAQ qu'il te faut, c'est un cours. C'est pas être doué, c'est avoir les bases.

n°1111380
thread g d​u mal
Posté le 07-06-2005 à 16:17:59  profilanswer
 

petite suggestion : vous avez pas l'impression de vous être éloigner du sujet ????  :heink: (retourner un tableau .....).

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Renvoi d'un tableau

 

Sujets relatifs
supprimer les "trous" d'un tableau ?Inserer un tableau dans WORD sous PHP via objet COM
Pointeur + Tableau : récupération d'un entierAdditionner la valeur d'une textbox pour un tableau de stats.
charge une image bmp dans un tableau 2D en C++Problème de tableau
detection de la derniere colonne d'un tableau en vb6definir un tableau en VB6
Tableau en phpprocédure avec renvoi de tableau d'objet
Plus de sujets relatifs à : Renvoi d'un tableau


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR