我有一个名为“Division”的类,里面有一个向量数组。
#include <vector>
#include "Player.h"
#include <string>
#include "role.h"
class Division
{
public:
std::string m_name;
std::vector<Player> m_division;
int search(int lower, int upper, Role role);
};
上面的课程中有很多功能,但它们不应该相关。 “玩家”玩家类也非常简单,
#include <string>
#include "Role.h"
class Player
{
public:
std::string m_name;
std::string m_battletag;
std::string m_email;
int m_sr;
Role m_role;
};
Role是一个简单的枚举,可以是ROLE_SUPPORT,ROLE_DPS,ROLE_TANK或ROLE_ANY。 下一个功能是我遇到的问题。玩家的SR应该在0-5000之间,并且我希望能够在上限和下限之间搜索玩家的向量,这是以下代码应该做的。
int Division::search(int lower, int upper, Role role)
{
for (int i = 0; i < m_division.size(); ++i)
{
if ((m_division[i].m_sr <= upper && m_division[i].m_sr >= upper) && m_division[i].m_role == role)
{
return i;
}
}
cout << "None found within that range and with that role\n";
return -1;
}
不幸的是它没有。事实上,无论我做什么,它返回-1并打印我创建的错误消息。我知道有一个解决方案,它寻找什么,所以为什么它不会工作? 如果我像在main中那样称呼它,
cout << NA.getName(NA.search(2100, 2200, ROLE_ANY));
(NA是一个分区)它总是返回-1,即使我知道2100和2200之间有一个拥有role_any的玩家,并且它在第3位。请帮助。
我将完整的程序上传到github here 任何帮助将不胜感激。 Testing.csv是一堆随机生成的数字和字符串,它正确地为程序格式化。 “Scrub Cup work”是main驻留的地方,所有类的解析函数都在各自的.h和.cpp文件中
答案 0 :(得分:0)
if((m_division [i] .m_sr &lt; = upper &amp;&amp; m_division [i] .m_sr &gt; = upper )
if(a&lt; = b和a&gt; = b)总是假,除非a完全等于b