我有以下示例
int main() {
...
}
void parameterList() {
...
}
void myMethodA() {
...
}
void myMethodB() {
...
}
void myMethodC() {
...
}
我已经阅读了几篇有关此主题的StackOverflow帖子,并且了解了将变量从myMethodA()传递到myMethodB()的过程,我将需要使用变量在myMethodA()中调用myMethodB()。为了说明
void parameterList() {
...
int someInteger = 45;
string someName = "John";
int otherInteger = 20;
myMethodB(someName, someIntegers);
myMethodC(otherInteger);
}
void myMethodB(string &someName, int &someInteger) {
...
string another_someName = someName;
int another_someInteger = someInteger;
...
}
void myMethodC(int &otherInteger) {
...
int another_someInteger_two = otherInteger;
...
}
parameterList()是一个函数,其中包含多个myMethod()函数的多个变量。在初始程序运行时,parameterList()必须首先在main中运行才能获取所有必需的变量。理想情况下,主函数将从parameterList()获取所有这些变量,并将其传递给主函数中的myMethod()。为了说明
Step 1
main function will run parameterList()
Step 2
parameterList() process and have multiple variables meant for multiple myMethod()
Step 3
main function should have a variable that can "store" these variables in order to pass it to all the myMethod() for further processing
main函数只有在被告知这样做并且myMethodA()中的变量在main内部时才运行myMethodB()。
对此进行任何澄清,我们将不胜感激。感谢您抽出宝贵的时间!
答案 0 :(得分:1)
将变量从函数A传递到main并传递回另一个
要从函数中传递值,可以将其返回。
要将值传递给函数,可以使用参数。示例:
mydateparser = lambda x: pd.datetime.strptime(x, "%d-%m-%Y")
df = pd.read_csv("CovidIndiaData.csv", parse_dates=['date'], date_parser=mydateparser, index_col=['date'])
如果myMethodA()需要返回多个变量,我认为这不起作用
这不是问题。虽然只能返回一个对象,但是该对象可以是类类型,并且类可以包含多个子对象。示例:
int myMethodA() {
int someInteger = 45;
// ...
return someInteger;
}
int main()
{
int someInteger = myMethodA();
myMethodB(someInteger);
}
如果对程序的结构有意义,则可以将该函数作为该类的成员函数,例如KamilCuk的answer中所展示的。
结构可以有数组吗?
是的。类成员可以是数组。
'example myMethodA()'是在主函数中吗?
这是一个函数的声明,该函数返回struct example {
int someInteger;
string someName;
};
example myMethodA();
void myMethodB(const example&);
的实例。
如何在myMethodA()返回的myMethodA()中返回这些变量?
与返回其他对象的方式相同。带有example
语句。
答案 1 :(得分:1)
您还可以使用一个类来包装数据并管理对象的生存期。
class Context {
int someInteger;
string someName;
Context(int a, const string& b) :
someInteger(a),
someName(b)
{}
void myMethodA() {
/* do something with someInteger and someName */
}
void myMethodB() {
/* do something with the results from myMethodA */
}
};
int main() {
Context ctx{45, "John"};
ctx.myMethodA();
ctx.myMethodB();
}