c++(6):error: incompatible types in assignment of ‘int*’ to ‘int [2]’

报错、原因、解决办法:

error: incompatible types in assignment of ‘int*’ to ‘int [2]’

原因:

        将函数返回值的类型“int*”强制转化为“int[2]”类型失败

解决办法:

        用一个“int*”的中间变量接收函数返回值,再转化为“int[2]”类型

修改前c++代码:

参数声明部分:

//参数声明
double point_start[3]={0.0,0.0,0.0};//起点位姿
double map_origin[2]={0.0,0.0};//地图原点
float resolution;//地图分辨率
int point_start_index[2]={0,0};//起点在地图中的坐标索引  

计算坐标索引的函数(返回值为int *类型)

int * compute_point_index(double point[]){
  int point_index[2];
  point_index[0]=(point[0]-map_origin[0])/resolution;
  point_index[1]=(point[1]-map_origin[1])/resolution;
  return point_index;
}

主程序:

//主程序
point_start_index=compute_point_index(point_start);

修改后c++代码:

函数部分:修改第二行数组类型,保证在跳出函数时数组没有被销毁:

int * compute_point_index(double point[]){
  static int point_index[2];
  point_index[0]=(point[0]-map_origin[0])/resolution;
  point_index[1]=(point[1]-map_origin[1])/resolution;
  return point_index;
}

主程序部分

  int * point_index;
  point_index=compute_point_index(point_start);
  point_start_index[0]=*point_index;point_start_index[1]=*(point_index+1);

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值