将变量从函数A传递到main并传递回另一个变量

时间:2020-07-19 16:01:21

标签: c++ parameter-passing pass-by-reference main

我有以下示例

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()。

对此进行任何澄清,我们将不胜感激。感谢您抽出宝贵的时间!

2 个答案:

答案 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();
}