Visibilité d'une fonction dans une classe appelée par une autre classe
Bonjour, j'aimerais améliorer la lisibilité d'un de mes codes par d'autres développeurs et je me pose une question sur la visibilité d'une fonction.
Voici un code simplifié :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| class A {
A() {}
B & getB(unsigned int index) {return B[index];}
void update() {
// update internal value
for(B & element:m_data)
element.updateParam3()*;
}
private:
vector<B> m_data;
}
class B {
B() {}
updateParam1() { // some code }
updateParam2() { // some code }
updateParam3() { // some code }
} |
Je peux accéder aux éléments B qui sont dans A::m_data avec A::getB(index).updateParamX() pour les paramètres 1 et 2. C'est bien le comportement que j'attends.
Pour B::updataParam3(), j'aimerais interdire l'accès en passant directement par A::getB(index).updateParam3() car je veux garder un état interne dans A suite à la modification de mon paramètre 3. Donc j'aimerais forcer tout développer à appeler A::update() à la place. En d'autres termes, j'aimerais que B::updateParam3() soit privé sauf quand je l'appelle depuis la classe A. Est-ce que ceci est possible ?
Merci d'avance !