/ / Еквивалент на R - в C ++: extern за локални променливи - c ++, r, extern

Еквивалент на R << - в C ++: външен за локални променливи - c ++, r, външен

Дефинирал съм променлива локално на функция в C ++, но би искала тя да е достъпна за друга C ++ функция, съдържаща се в отделен файл.

В R, << - позволява локални променливи да бъдат достъпни глобално чрез копиране.

Има ли еквивалент на << - в C ++, който ще ми позволи да извикам локални променливи (които иначе не са дефинирани глобално) чрез extern декларация в друг C ++ файл?

Дали кодът по-долу ще е наред и ще работи както се очаква?

Например за достъп до 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

Отговори:

2 за отговор № 1

В C ++, функцията не може да изтече декларации в обхващащи обхвати. Най-близкото нещо, което можете да направите, е това:

void f() {
extern int x;
}

Това причинява x да се отнасят до глобална променлива, която е дефинирананякъде другаде в програмата. Друга функция в друга транслационна единица, съдържаща същата декларация, може да се отнася към същата променлива. Въпреки това, нито една от декларациите определя променливата и трябва да предоставите дефиниция в глобален обхват, за да може програмата да се свърже.

Ако е глобална променлива, която се нуждаете, трябвадефиниране на глобална променлива. Въпреки това, променящото се глобално състояние често прави програмите по-трудни за обосноваване, така че обикновено е по-добре да се избягва, когато е възможно. (предаване на информация във функционални параметри), или в най-лошия случай, споделяне на променливо състояние, капсулирано в клас, така че да не може да изтече извън класа.