Wenn Sie eine Variable in function1 haben, die Sie in function2 verwenden möchten, dann müssen Sie entweder:.
- Pass direkt,
- haben eine höhere Scope-Funktion, die sowohl deklarieren die Variable aufruft und übergeben Sie es, oder
- es eine globale erklären und dann können alle Funktionen zugreifen es
Wenn Ihr function2 von function1 aufgerufen wird, dann können Sie übergeben Sie es einfach als Argument für 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.";
}
Wenn function1 nicht function2 nicht nennen, aber beide von function3 genannt werden, dann deklarieren function3 die Variable und übergeben es an beiden function1 und function2 als Argument.
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.";
}
Schließlich, wenn weder function1 noch function2 voneinander genannt wird, noch von der gleichen Funktion in Code, erklären dann die Variable als global geteilt werden, und function1 und function2 werden in der Lage sein, direkt zu nutzen .
std::string global_abc;
void function1()
{
cout << global_abc << " is available everywhere.";
}
void function2()
{
cout << global_abc << " is available everywhere.";
}
Ich schlage vor, Sie lesen Scoping, und Sie werden verstehen, warum es nicht möglich ist. –
Das macht einfach keinen Sinn: Es gibt eine Instanz von 'abc' pro Aufruf von' function1'. In 'für (int i = 0; i <100; ++ i) {Funktion1(); } Welche der hundert Instanzen von 'ABC' willst du? –
Kennen Sie statische Mitglieder? – phadaphunk