Problème avec les fonctions membres

nisaloncaje Messages postés 154 Date d'inscription samedi 7 janvier 2006 Statut Membre Dernière intervention 28 septembre 2008 - 14 janv. 2007 à 16:20
nisaloncaje Messages postés 154 Date d'inscription samedi 7 janvier 2006 Statut Membre Dernière intervention 28 septembre 2008 - 3 févr. 2007 à 21:26
Bonjour
J'ai le petit problème suivant : j'ai deux classes, une qui se nomme obj et l'autre F

La classe obj est définie ainsi :
class obj{
// ... des choses et d'autres
public:
float v;
std::vector<F> f;
};

Et F contient une fonction membre une fonction qui doit faire appel à v (défini dans obj). Comment faire pour ceci ? Merci d'avance

5 réponses

rrk275 Messages postés 540 Date d'inscription vendredi 25 juin 2004 Statut Membre Dernière intervention 1 octobre 2007 2
14 janv. 2007 à 18:31
Le passer en paramètre?

Louis
0
cs_juju12 Messages postés 966 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 4 mars 2010 4
14 janv. 2007 à 19:59
Il faut déclarer la classe sans implémenter son contenu soit:

class Obj;
class F{...};
class Obj{...};

De cette façon on peut utiliser des références à Obj dans F alors qu'elle n'a pas été réellement déclarée (solution au problème des dépendances circulaires...)
0
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
15 janv. 2007 à 01:45
Il faut que chaque objet de F sache dans quel object Obj il est ou alors qu'il possède un pointeur le floatant.

class F
{
F(obj * _target);

void Fonction_qui_a_besoin_de_v()
{
   owner->v   <= et la tu récupères la valeur du floatant de ton object Obj.
}

obj * owner;
}

Par contre pour créer un object F, il faudra systèmatiquement du coup spécifier dans quel object Obj tu l'ajoutes.
On peut éviter ca facilement, en rendant tout ca transparent avec des fonctions membre dans Obj pour ajouter des objets F.
0
nisaloncaje Messages postés 154 Date d'inscription samedi 7 janvier 2006 Statut Membre Dernière intervention 28 septembre 2008
19 janv. 2007 à 20:04
Merci, mais je n'ai pas compris comment fonctionne le F(obj * _target);
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
nisaloncaje Messages postés 154 Date d'inscription samedi 7 janvier 2006 Statut Membre Dernière intervention 28 septembre 2008
3 févr. 2007 à 21:26
Désolé, je ne devais pas avoir les yeux en face des trous :)

Bon par contre j'ai le problème suivant : en fait F peut appartenir à plusieurs types d'objets différents (qui héritent tous de obj)

Comment faire ? (parce que le pointeur sur un obj ne peut pas marcher)
0
Rejoignez-nous