如何解决错误:与'operator <<'不匹配操作数类型为'std :: ostream'{aka'std :: basic_ostream <char>'}和'HeroPower'
我目前正在为此工作:
在英雄联盟中有N个英雄,第i个英雄有物理伤害和法术伤害。
第i个英雄如果具有更强的物理伤害,则据说比第j个英雄更强大。
如果两个英雄受到相同的物理伤害,那么一个更强大的英雄将受到更多的魔法伤害。
请注明最强英雄的物理伤害和魔法属性。
因此,我编写了一个名为HeroPower的类,将功效评估为double
类型:pysicalDamage.magicalDamage
我正在努力对此类进行排序,问谷歌并找到此站点:How to sort a class array
所以我在我的代码上尝试了它,并返回以下内容:error: no match for 'operator<<' (operand types are 'std::ostream' {aka 'std::basic_ostream<char>'} and 'HeroPower'
“ HeroPower是我的班级的名字”
为什么?
我的代码:
#include <iostream>
#include <cmath>
#include <algorithm>
using namespace std;
class HeroPower
{
int physicalDamage {};
int magicalDamage {};
public:
void getNum(int input1,int input2)
{
physicalDamage = input1;
magicalDamage = input2;
}
double actualStrength()
{
int temp = magicalDamage;
int countNum = 0;
while (temp != 0)
{
temp = temp / 10;
++countNum;
}
return physicalDamage + magicalDamage / pow(10,countNum);
}
};
class ThingComparator
{
bool operator()(HeroPower& a,HeroPower& b)
{
return a.actualStrength() < b.actualStrength();
}
};
int main()
{
int n,m;
cin >> n >> m;
HeroPower arrayNum[n];
for (int i = 0; i < n; i++)
{
int input1,input2{};
cin >> input1 >> input2;
HeroPower hero {};
hero.getNum(input1,input2);
arrayNum[i] = hero;
}
sort(arrayNum,arrayNum + n,ThingComparator());
cout << arrayNum[m - 1];
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。