Дефинирал съм променлива локално на функция в 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
да се отнасят до глобална променлива, която е дефинирананякъде другаде в програмата. Друга функция в друга транслационна единица, съдържаща същата декларация, може да се отнася към същата променлива. Въпреки това, нито една от декларациите определя променливата и трябва да предоставите дефиниция в глобален обхват, за да може програмата да се свърже.
Ако е глобална променлива, която се нуждаете, трябвадефиниране на глобална променлива. Въпреки това, променящото се глобално състояние често прави програмите по-трудни за обосноваване, така че обикновено е по-добре да се избягва, когато е възможно. (предаване на информация във функционални параметри), или в най-лошия случай, споделяне на променливо състояние, капсулирано в клас, така че да не може да изтече извън класа.