/ / Ekvivalent R's << - v C ++: extern pre lokálne premenné - c ++, r, extern

Ekvivalent R << << - v C ++: extern pre lokálne premenné - c ++, r, extern

Lokálne som definoval premennú pre funkciu v C ++, ale chcel by som, aby bola dostupná pre inú funkciu C ++ obsiahnutú v samostatnom súbore.

V R, << - umožňuje globálny prístup k lokálnym premenným ich skopírovaním.

Existuje ekvivalent << - v C ++, ktorý mi umožní volať lokálne premenné (ktoré nie sú definované globálne) prostredníctvom externého vyhlásenia v inom súbore C ++?

Bol by nasledujúci kód v poriadku a fungoval by podľa očakávaní?

Napríklad pre prístup k y:

### File 1.cpp ###
void func() {
const std::vector x
int y = x.size()
}

### File 2.cpp ###
extern int y
y // Call y somewhere else within program

odpovede:

2 pre odpoveď č. 1

V C ++ funkcia nemôže preniknúť deklarácie do ohraničujúcich rozsahov. Najbližšia vec, ktorú môžete urobiť, je toto:

void f() {
extern int x;
}

To spôsobuje x odkazovať na globálnu premennú, ktorá je definovanániekde inde v programe. Ďalšia funkcia v inej prekladateľskej jednotke, ktorá obsahuje rovnaké vyhlásenie, by sa potom mohla vzťahovať na tú istú premennú. Avšak ani vyhlásenie definuje premenné a musíte zadať definíciu v globálnom rozsahu, aby sa program mohol prepojiť.

Ak potrebujete globálnu premennú, mali by stedefinovať globálnu premennú. Premenlivý globálny stav však často sťažuje programy dôvodom uvažovania, takže zvyčajne je lepšie sa tomu vyhnúť vždy, keď je to možné. Obvykle budete chcieť program usporiadať tak, aby dve funkcie spolu komunikovali prostredníctvom mechanizmu volania funkcií, kedykoľvek je to možné. (odovzdávanie informácií vo funkčných parametroch) alebo, v najhoršom prípade, zdieľajú premenlivý stav zapuzdrený vo vnútri triedy, takže môže uniknúť mimo triedy.