Problème avec les fonctions membres

Signaler
Messages postés
154
Date d'inscription
samedi 7 janvier 2006
Statut
Membre
Dernière intervention
28 septembre 2008
-
Messages postés
154
Date d'inscription
samedi 7 janvier 2006
Statut
Membre
Dernière intervention
28 septembre 2008
-
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

Messages postés
540
Date d'inscription
vendredi 25 juin 2004
Statut
Membre
Dernière intervention
1 octobre 2007
2
Le passer en paramètre?

Louis
Messages postés
966
Date d'inscription
samedi 3 avril 2004
Statut
Membre
Dernière intervention
4 mars 2010
4
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...)
Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
5
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.
Messages postés
154
Date d'inscription
samedi 7 janvier 2006
Statut
Membre
Dernière intervention
28 septembre 2008

Merci, mais je n'ai pas compris comment fonctionne le F(obj * _target);
Messages postés
154
Date d'inscription
samedi 7 janvier 2006
Statut
Membre
Dernière intervention
28 septembre 2008

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)