首页 > 解决方案 > '+=' 运算符重载类型不可行

问题描述

我拿

./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];

为什么它不可行?我想将我的指针数组发送到重载函数,并且数组定义不能更改。我只允许更改重载函数。

标签: c++

解决方案


operator +=需要参考,而不是指针。

既然你有这个:

Astronaut* astronautList[5];

您需要取消引用指针:

moonMission += *(astronautList[0]);

其他代码行也会有类似的变化。


推荐阅读