调用函数并返回值
Calling functions and returning values
我是一个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() ..的输出参数?如果输出参数如下,则保存它:字符串名称,int状态
您必须向我们展示getRequiredInfo()的声明,但据推测它类似于
X result = getInfo.getRequiredInfo(sSw,sName,sList);
我们不知道X是什么
如果getRequiredInfo
得到字符串的地址,请尝试:
getInfo.getRequiredInfo(&sSw, &sName, &sList);
现在函数可以改变参数的值
可以在函数中返回单个值
所以你可以创建包含string和int的结构体,并返回结果
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;
最简单的是从函数返回一个pair<string,int>
。函数的特征是pair<string,int> getRequiredInfo(const string& s1, const string& s2, constr string& s3);
。然后,您可以使用pair
的first
和second
成员访问string
和int
部分。
听起来好像getRequiredInfo
具有从读取和写入您传入的一些参数的行为。
在c++中,与c#不同,没有办法指定函数应该或必须改变给定参数的值。实际上,如果您像这样定义函数:
void GetInfo::getRequiredInfo(string a, string b, string c);
则所有三个形参将通过值传递,这意味着在函数内部对它们所做的任何更改都将更改对这些对象的副本,而不是对象本身。
正如其他贡献者所建议的,如果您真的想要更改传入的参数,您可以通过传递引用来实现:
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);
- 从python中调用C++函数并获取返回值
- 编译器警告:执行到达值返回函数的末尾而不返回值
- 将返回值存储在函数指针数组的指针中是如何工作的?
- 程序不向函数返回值
- 如何在另一个函数中使用返回值作为参数?
- 编写以 C++ 为单位返回值的函数
- 了解在返回值之前和之后使用 EAX 的函数调用
- 当我使用 void 函数的返回值(通过强制转换函数指针)时,究竟会发生什么?
- 如何在不使用临时变量的情况下取消引用返回指针的函数的返回值?
- 如何将不可移动和不可复制的函数返回值获取到数组中
- G++ 编译器是否在未使用返回值的情况下将 constexpr 函数视为常规函数?
- 为什么当你将函数的返回值乘以零时它不会短路?
- 函数的返回值类型是别名 ***或 *** 布尔值
- 如何在没有返回值的情况下使用(特征)unaryExpr 和 lambda 函数?
- 创建 std::函数,它返回具有函数成员值的变量.分段错误
- 为什么这个"ctypes"包装函数的返回值是"c_long(0)"而不是&quo
- 函数不显示返回值 - C++
- 结构新手,我对如何从 void 函数中返回值并将其放入另一个函数感到困惑
- 将 void 函数更改为返回值函数
- 返回值函数中结构成员赋值的额外拷贝