2010-11-23 21 views
0

J'ai une classe, appelons-la , qui effectue un calcul qui renvoie une valeur de int value, et une autre classe dans mon système, class B utiliser int value pour d'autres calculs. Mon plan est d'utiliser une troisième classe, class C, où la variable sera définie, pour passer la variable entre A et B, avec ces deux juste travailler à partir des références à la int value en class C. Mon problème est que je ne sais pas comment référencer une variable dans une autre classe sans d'abord instancier une classe ou une autre, la construction qui s'ensuivra écraserait int value.Comment appeler par référence une variable d'une classe d'une autre en C++


Mise à jour: Le code ci-dessous donne un aperçu de ce que je suis en train de réaliser. Je suis en train d'avoir la variable

class A 
{ 
public: 
    void calculation1() 
}; 

void A::calculation1() 
{ 
    value = 10; 
} 

class B 
{ 
public: 
    void calculation2(); 
}; 

void B::calculation2() 
{ 
    for (int count = 0; count < value; count ++) 
    { 
     // Do stuff here 
    } 
} 

class C 
{ 
    int value; 
} 
+2

Ajoutez le code réel afin que nous puissions résoudre votre vrai problème, s'il vous plaît. "Disons" peut seulement obtenir une réponse du même type. – GManNickG

+0

J'ai ajouté du code à ma question. Ce n'est pas beaucoup parce que mon problème est que je ne sais pas ce que je suis censé écrire pour cela. –

+0

Pourquoi A, B et C doivent-ils être des classes? Qu'est-ce qui vous empêche de faire 'B (A (...))' où A et B sont de vieilles fonctions simples? – zwol

Répondre

4

Je crois que vous n'allez pas dans la bonne direction ici. Si je reformule je reçois quelque chose comme la description du problème en pseudo-code,:

// The second calculation result depends on the result of the first one, so we 
// provide it as a parameter. 
int firstValue = calculationA(); 
int secondValue = calculationB(firstValue); 

Ceci est parfaitement valable en soi: il vous suffit de mettre en œuvre deux fonctions libres calculationA et calculationB et il n'y a pas besoin de classes de quoi que ce soit J'aime ça. Maintenant, si vous voulez vraiment mettre des classes autour de cela, vous pouvez le faire. Ce que vous devez comprendre, c'est que l'interaction des classes est une conséquence de leurs responsabilités respectives, et non le contraire. Par exemple, si le résultat de calculation1 n'a absolument aucune utilité en plus d'être envoyé à calculation2, peut-être que les deux fonctions ne devraient pas appartenir à des classes différentes. Identifiez les responsabilités, essayez de les exprimer en tant que classes, et l'interaction apparaîtra naturellement.

1

Pourquoi ne pas avoir seulement une fonction set dans class B, où vous pouvez définir la valeur à ce que le calcul des rendements A?

+0

Qu'est-ce qu'une fonction 'set'? J'ai regardé autour des deux manuels et d'Internet et je ne peux trouver aucune référence à une fonction générique telle que 'set()', excepté plus de questions à leur sujet. J'ai trouvé des fonctions spécifiques, comme 'setSize()', mais c'est tout. –

+1

@Chris: Vous * le faites *, il n'existe pas jusqu'à ce que vous le fassiez. – GManNickG