我是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 请帮帮我......
答案 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
部分用户first
和second
成员。
答案 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);