/ / Equivalente de R's << - em C ++: extern para variáveis ​​locais - c ++, r, extern

Equivalente de R's << - em C ++: extern para variáveis ​​locais - c ++, r, extern

Eu defini uma variável localmente para uma função em C ++, mas gostaria de tê-lo acessível para outra função C ++ contida em um arquivo separado.

Em R, << - permite que variáveis ​​locais sejam acessadas globalmente, copiando-as.

Existe um equivalente a << - em C ++ que me permitirá chamar variáveis ​​locais (que de outra forma não são definidas globalmente) através da declaração externa em outro arquivo C ++?

O código abaixo seria OK e funcionaria como esperado?

Por exemplo, para acessar 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

Respostas:

2 para resposta № 1

Em C ++, uma função não pode vazar declarações para escopos delimitadores. A coisa mais próxima que você pode fazer é esta:

void f() {
extern int x;
}

Isso causa x para se referir a uma variável global que é definidaem outro lugar no programa. Outra função em outra unidade de tradução, contendo a mesma declaração, poderia então referir-se à mesma variável. No entanto, nem declaração define a variável e você deve fornecer uma definição no escopo global para que o programa vincule.

Se é uma variável global que você precisa, você devedefinir uma variável global. No entanto, o estado global mutável geralmente torna os programas mais difíceis de raciocinar, portanto, é melhor evitá-lo sempre que possível. Normalmente, você desejará estruturar seu programa para que duas funções se comuniquem através do mecanismo de chamada de função sempre que possível. (passando informações em parâmetros de função) ou, na pior das hipóteses, compartilhando o estado mutável encapsulado dentro de uma classe, de forma que ele não possa vazar para fora da classe.