c++ - '+=' 运算符重载类型不可行
问题描述
我拿
./Mission.h:56:11: note: candidate function not viable: no known conversion from 'Passenger *' to
'const Passenger' for 1st argument; dereference the argument with *
Mission& operator+=(const Passenger &passenger);
^
./Mission.h:58:11: note: candidate function not viable: no known conversion from 'Passenger *' to
'const Astronaut' for 1st argument
Mission& operator+=(const Astronaut &astronaut);
我在头文件中定义了重载的函数
Mission& operator+=(const Astronaut &astronaut);
在函数定义
Mission& Mission::operator+=(const Astronaut &astronaut){
实施
moonMission += astronautList[0];
moonMission += astronautList[1];
moonMission += astronautList[2];
我这样定义数组
Astronaut* astronautList[5];
为什么它不可行?我想将我的指针数组发送到重载函数,并且数组定义不能更改。我只允许更改重载函数。
解决方案
您operator +=
需要参考,而不是指针。
既然你有这个:
Astronaut* astronautList[5];
您需要取消引用指针:
moonMission += *(astronautList[0]);
其他代码行也会有类似的变化。
推荐阅读
- forms - Flutter 中的重复向导/表单
- javascript - 为什么如果我使用 'var' 变量然后在代码中删除它,它会留在内存中并且我可以再次使用它?这是 JAVA SCRIPT 的正常行为吗?
- networking - 如何在命名空间中创建 SSH 服务器?
- tensorflow - TF2 - GradientTape 与 Model.fit() - 为什么 GradientTape 不起作用?
- javascript - 刷新后从本地存储中删除的项目仍然存在(vanilla JS)
- jquery - Jquery 不在 Firefox 中触发,但在 IE 和 Edge 中有效
- vba - 使用 VBA 恢复 JPG 文件中的元数据
- grpc-python - 如何在gRPC Python中实现消息接收的服务器端双向流超时?
- javascript - 根据取货和交付按钮显示或隐藏 WooCommerce 结帐字段
- c - 将两个整数输出为双精度数。C语言