在C++中将结构从被调用函数返回到调用函数的适当方法是什么
What is the appropriate manner to return a struct from a called function to a calling function in C++?
我有一个函数,它接受两个 int 值,进行一些处理,然后以结构的形式将处理后的值返回给调用函数。
以下是我调用的函数:
auto start_end(){
bool cond = false;
int xd = 0;
int yd = 0;
std::cout<<("Please enter a desired x coordinate")<<std::endl;
std::cin>>xd;
while(std::cin.fail()){
std::cout<<("That is not a valid integer. Please enter a valid x co-ordinate")<<std::endl;
std::cin.clear();
std::cin.ignore(256,'n');
std::cin>>xd;
}
std::cout<<("Please enter a desired y coordinate")<<std::endl;
std::cin>>yd;
while(std::cin.fail()){
std::cout<<("That is not a valid integer. Please enter a valid y co-ordinate")<<std::endl;
std::cin.clear();
std::cin.ignore(256,'n');
std::cin>>yd;
}
struct xy{int x_received; int y_received;};
return xy{xd,yd};
}
我们可以看到结构体 xy 在上面的函数 start_end(( 中返回两个值 xd,yd。
以下是我的调用函数:
int main(int argc, const char * argv[]) {
std::cout <<("A-Star-Algorithm for Project 2 obstacle map")<<std::endl;
int x_start = 0;
int y_start = 0;
int init_point = start_end();
return 0;
}
因此,当我尝试将返回值 xd、yd 存储在变量 init_point 中时,出现错误:
No viable conversion from 'xy' to 'int'
由于我收到此错误,我尝试将接收变量编写为 2 - 索引数组:
int init_point[2] = start_end();
当我尝试以这种方式执行此操作时,出现以下错误:
Array initializer must be an initializer list
我的确切问题:当函数 int main(( 内部调用函数 start_end(( 返回的值 xd 和 yd 时,我必须以什么适当的方式接收它?
您需要
将struct
移动到start_end
和main
可以看到的地方:
struct xy { int x; int y; };
xy start_end()
{
...
return { xd, yd };
}
int main()
{
}
然后,您可以为其分配auto
或使用类型名称xy
:
int main()
{
auto xy1 = start_end();
xy xy2 = start_end();
}
或者您可以使用 std::pair
或 std::tuple
.
std::tuple
让你松了一口气(现场(
#include <iostream>
#include <tuple>
auto start_end() {
auto x = 1, y = 2;
return std::make_tuple(x, y);
}
int main() {
int x, y;
std::tie(x, y) = start_end();
std::cout << x << ' ' << y << std::endl;
}
相关文章:
- 函数调用中参数的顺序重要吗
- 基于另一个成员参数将函数调用从类传递给它的一个成员
- 变量没有改变?通过向量的函数调用
- 在两个类中共享相同的函数调用,并在不需要时避免空实例化
- 是否有C++编译器选项允许激进地删除所有函数调用,并将参数传递给具有空体的函数
- 我知道函数调用中存在歧义.有没有办法调用foo()函数
- 模板函数调用
- 获取从C++中同一类中的构造函数调用的方法返回的值
- 析构函数调用
- 成员函数调用和C++对象模型
- 使用共享指针的函数调用,其对象应为 const
- C++:编译时检查匹配的函数调用对?
- 函数调用C++中的参数太少
- 来自 DLL 的函数调用 [表观调用的括号前面的表达式必须具有(指向-)函数类型]
- 返回指向对象的指针的函数调用是否为 prvalue?
- C++ 如何重载 [] 运算符并进行函数调用
- 代码的效率. 转到和函数调用
- 是同一作用域的函数部分中的函数调用
- 如何封装一个函数,以便它只能由同一类中的一个其他函数调用?
- 类型擦除的std::function与虚拟函数调用的开销