【发布时间】:2018-09-22 02:15:50
【问题描述】:
我有一个函数,它接受两个 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};
}
在上面的函数start_end()中我们可以看到struct xy返回了两个值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 时,我必须以什么适当的方式接收它?
【问题讨论】:
标签: c++ function struct return