调用函数和返回值

时间:2011-04-12 11:05:44

标签: c++

我是C ++的初学者。我有一个函数,它返回我需要的一些参数,用于我的程序的其余部分。我试图在另一个类中访问该函数。我对我的方式很困惑做到了...有谁可以帮助我..?

以下是我的代码:

 void SampleProgram :: myFunction()
   {
         string sInput;
         GetInfo  getInfo(sInput);  //creating instance of the class containing the function

            string sSw="";
       string sName="ram";
       string sList="list";

           getInfo.getRequiredInfo(sSw,sName,sList); //calling the function

    }

如何访问getRequiredInfo()的输出参数..?并保存,如果输出参数如下:string name,int status 请帮帮我......

5 个答案:

答案 0 :(得分:0)

你必须向我们展示getRequiredInfo()的声明,但大概是这样的

X result = getInfo.getRequiredInfo(sSw,sName,sList);

我们不知道 X 是什么,没有看到声明。

答案 1 :(得分:0)

如果getRequiredInfo获取字符串的地址,请尝试以下操作:

getInfo.getRequiredInfo(&sSw, &sName, &sList);

现在该函数可以更改参数的值。

答案 2 :(得分:0)

您可以在函数中返回单个值。

所以你可以创建包含string和int的struct并将其作为结果返回。

    struct
    {
           string name;
            int    k;
    }result;
    result r = getInfo.getRequiredInfo(sSw,sName,sList); //calling the function

您可以保存输出参数,如下所示:

   string _name;
   int       nk;

   _name = r.name;
   nk    = r.k;

答案 3 :(得分:0)

最简单的是从函数返回pair<string,int>。所以你的函数signarutre将是pair<string,int> getRequiredInfo(const string& s1, const string& s2, constr string& s3);。然后,您可以访问string的{​​{1}}和int部分用户firstsecond成员。

答案 4 :(得分:0)

听起来好像getRequiredInfo具有读取写入您传入的一些参数的行为。

在C ++中,与C#不同,没有办法指定函数应该或必须更改给定参数的值。实际上,如果你已经定义了这样的函数:

void GetInfo::getRequiredInfo(string a, string b, string c);

然后所有三个参数都将按值传递 ,这意味着在函数内对它们所做的任何更改都将更改这些对象的副本,而不是对象本身。 / p>

正如其他贡献者所建议的那样,如果你真的想更改你传入的参数,你可以通过传递引用来实现:

void GetInfo::getRequiredInfo(string a, string& b, string& c);
通过传递指针

或(更典型地):

void GetInfo::getRequiredInfo(string a, string* b, string* c);

但是,如果你希望你的函数只是简单地读取参数并返回一个值(这是你所谓的“输出参数”的更可接受的术语)那么你必须表达你的“名称+状态”元组作为单一价值。

您可以像其他人刚刚建议的那样使用内置的pair模板:

pair<string,int> getRequiredInfo(string a, string b, string c);

或者您可以像其他人建议的那样定义自己的结构:

struct NameAndStatus
{
    string name;
    int status;
};

NameAndStatus getRequiredInfo(string a, string b, string c);