2016-11-03 33 views
0

"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_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を返し、私が作成したエラーメッセージを表示します。私はそれが何を探しているのかという解決策があることを知っています。なぜそれはうまくいかないのですか?私がメインで行うように(NAが部門です)、それは常に-1を返し、私はrole_anyを持って2100年と2200年の間にプレイヤーが存在するという事実のために知っているにもかかわらず

cout << NA.getName(NA.search(2100, 2200, ROLE_ANY)); 

、それを呼び出すと、場合 3位を助けてください。

私はgithubに完全なプログラムをアップロードしましたhere 助けてくれれば大歓迎です。 Testing.csvはランダムに生成された数字と文字列の束で、プログラム用に正しくフォーマットされています。 "スクラブカップの作品は、" どこのメイン存在であり、すべてのクラスは、解析関数で、それぞれの.hと.cppのファイルの[i]を.m_sr < =上位 & & m_division [I

+1

は ''であなたのif'声明で詳しく見てみましょうbでと正確に一致しない限り()< = b、および> = bが常に偽である場合あなたが問題を見るまでそれを見つめ続けてください。 "これは意味をなさないか?" –

+0

別の問題は、各行の '\ n'の前に '\ r'を含むcsvファイルからcsvデータを解析する際に、roleStringで '/ r'を削除する必要があることです。さもなければ、それは印刷を続けるでしょう:プレーヤー番号の役割の選択に何かが間違っていました。 – David

答えて

0

場合((m_divisionです] .m_sr > =上位

関連する問題