私はクラスAPDを持っており、ベクトルを介してファイルのデータを読み込みます。 いくつかの操作では、enumフラグを使用しますが、フラグの設定は機能しますが、その後のチェックはしません。クラスによる列挙チェックは機能しません
ここでのコードセグメントです:
for(unsigned long int i=0; i<apdvec_filter.size(); i++)
{
long int APD_filter_SN_i = apdvec_filter[i].getSN();
for(unsigned long int j=0; j<apdvec_database.size(); j++)
{
long int APD_database_SN_j = apdvec_database[j].getSN();
if(APD_filter_SN_i==APD_database_SN_j && APD_filter_SN_i!=0 && apdvec_database[j].getMatchStateString()!=APD::MATCHED)
{
apdvec_database[j].setMatchState(APD::MATCHED);
cout << "SN_i: " << APD_database_SN_j << " SN_j:" << APD_database_SN_j << " type: " << apdvec_database[j].getMatchStateString() << endl;
}
if(APD_filter_SN_i==APD_database_SN_j)
{
// if(apdvec_database[j].getMatchStateString()==APD::MATCHED)
{
cout << "SN_j: " << APD_database_SN_j << " type: " << apdvec_database[j].getMatchStateString() << endl;
}
}
}
}
この利回りは:
SN_i: 818008630 SN_j:818008630 type: MATCHED
SN_j: 818008630 type: MATCHED
SN_i: 917010242 SN_j:917010242 type: MATCHED
SN_j: 917010242 type: MATCHED
SN_i: 912009899 SN_j:912009899 type: MATCHED
SN_j: 912009899 type: MATCHED
SN_i: 906009386 SN_j:906009386 type: MATCHED
SN_j: 906009386 type: MATCHED
しかし、私はライン// if(apdvec_database[j].getMatchStateString()==APD::MATCHED)
を入力したときに、私は唯一の
SN_i: 818008630 SN_j:818008630 type: MATCHED
SN_i: 917010242 SN_j:917010242 type: MATCHED
SN_i: 912009899 SN_j:912009899 type: MATCHED
SN_i: 906009386 SN_j:906009386 type: MATCHED
取得クラスAPDのヘッダに列挙の宣言がある:
class APD
{
public:
enum MatchStateType{UNDEFINED=0,NOT_MATCHED=1, MATCHED=2};
static string MatchStateStrings[3];
MatchStateType getMatchState() const;
string getMatchStateString() const;
void setMatchState(int a_match_state);
private:
MatchStateType m_match_state;
}
とによるCPP-ファイルで宣言自体:
APD::MatchStateType APD::getMatchState() const
{
return m_match_state;
}
string APD::getMatchStateString() const
{
return MatchStateStrings[(int)m_match_state];
}
void APD::setMatchState(int a_match_state)
{
m_match_state=static_cast<MatchStateType>(a_match_state);
}
なぜこれが起こるのですか?
「MATCHED」項目のみをフィルタリングすると、「MATCHED」項目のみが取得されます。問題は何ですか?比較演算を 'if'の中に括弧で囲むこともできます。 – VTT
stackoverflow.comの[ヘルプ]で説明されているように、質問が[mcve]のすべての要件を満たしていないため、誰でもあなたに何かを説明することはできません。あなたはあなたの質問を編集し、[mcve]を提供する必要があります。 –
@VTT問題は、列挙型フラグをMATCHEDに設定することですが、MATCHEDに設定されているすべてのベクトル要素をフィルタリングしたいときは、何も表示されません。 – Ben