Pourquoi tu deconseille les variable globales ?
C´est le principe du moindre privilège.
Une variable globale est visible par toutes les fonctions du programmes, or il est fort possibles que la majeure partie d´entre elles ne l´utilisent pas. C´est pourquoi on recommande l´usage de variables locales : elles n´existent que tant qu´on en a besoins. Dès qu´on sort du bloc ou elles ont été déclarés, elles sont perdues.
De plus, je ne pense pas que ce genre de fonction soit très judicieuse. Créer une fonction dont le seul rôle est d´initialiser une variable à 5 ne se justifie pas.
Il est préférable de réécrire aaa = 5; la ou c´est nécessaire ( n´oublions pas que les appels de fonctions sont beaucoup plus longs que les instruction d´affectation).
Sinon, une des solutions au problème peut être de déclarer la variale dans la fonction main et d´utiliser les pointeurs pour passer l´adresse de aaa aux fonctions qui en on besoin :
void fonction1 ( int *aaaPtr)
{
*aaaPtr =5 ;
// . ..
}
void fonction2 ( int *aaaPtr)
{
cout << *aaaPtr <<endl;
// . ..
}
int main()
{
int aaa = 5;
fonction1 ( aaa ) ;
fonction2 ( aaa ) ;
return 0;
}
Voila