Si tiene una variable en function1 que desea utilizar en function2, a continuación, usted debe:.
- pase directamente,
- tener una función de alcance mayor que llama tanto declarar la variable y pasarlo, o
- declarar que un mundial y luego todas las funciones pueden acceder a él
Si su function2 se llama desde function1, entonces se puede simplemente páselo como argumento para function2.
void function1()
{
std::string abc;
function2(abc);
}
void function2(std::string &passed)
{
// function1::abc is now aliased as passed and available for general usage.
cout << passed << " is from function1.";
}
Si function1 no llama function2, pero ambos son llamados por FUNCTION3, a continuación, tener FUNCTION3 declarar la variable y lo pasan a tanto function1 y function2 como argumento.
void parentFunction()
{
std::string abc;
function1(abc);
function2(abc);
}
void function1(std::string &passed)
{
// Parent function's variable abc is now aliased as passed and available for general usage.
cout << passed << " is from parent function.";
}
void function2(std::string &passed)
{
// Parent function's variable abc is now aliased as passed and available for general usage.
cout << passed << " is from parent function.";
}
Por último, si ninguno function1 ni function2 se llama el uno del otro, ni de la misma función en el código, a continuación, declarar la variable para ser compartido como mundial, y function1 y function2 podrán utilizar directamente .
std::string global_abc;
void function1()
{
cout << global_abc << " is available everywhere.";
}
void function2()
{
cout << global_abc << " is available everywhere.";
}
Le sugiero que lea sobre el alcance, y entenderá por qué no es posible. –
Esto simplemente no tiene sentido: hay una instancia de 'abc' por invocación de' function1'. En 'for (int i = 0; i <100; ++ i) {function1(); } '¿cuál de las cien instancias de' abc' quieres? –
¿Conoces miembros estáticos? – phadaphunk