-1

私はMFCで作業しており、このクラスがあります:

class CUnit
{
private:
    CString name;
    CString init;
    CString chp;
    CString rhp;
    CString condition;
public:
    CUnit(void);
    ~CUnit(void);
    void setName( CString str );
    void setInit( CString str );
    void setCHP( CString str );
    void setRHP( CString str );
    void setCond( CString str );
    CString getName() const;
    CString getInit() const;
    CString getCHP() const;
    CString getRHP() const;
    CString getCond() const;    
    bool operator< ( CUnit ) const;
};

CUnit::CUnit(void)
{
}


CUnit::~CUnit(void)
{
}

bool CUnit::operator< ( CUnit unit ) const
{
    return !( this->init < unit.init );
}

void CUnit::setName( CString str )
    {
        name = str;
    }
void CUnit::setInit( CString str )
    {
        init = str;
    }
void CUnit::setCHP( CString str )
    {
        chp = str;
    }
void CUnit::setRHP( CString str )
    {
        rhp = str;
    }
void CUnit::setCond( CString str )
    {
        condition = str;
    }
CString CUnit::getName() const
{
    return name;
}
CString CUnit::getInit() const
{
    return init;
}
CString CUnit::getCHP() const
{
    return chp;
}
CString CUnit::getRHP() const
{
    return rhp;
}
CString CUnit::getCond() const
{
    return condition;
}

Editboxes から値を正常に取得しましたが、値を取得したときにそれらを挿入するとset<CUnit>CString最初の文字しか取得できません。ベクトルで試してみましたが、すべて同じです。
私は次のようにセットを埋めます:

vector<CUnit> units;
CUnit unit;
CEdit *edit;
CString str;
edit = reinterpret_cast<CEdit *>(GetDlgItem(IDC_NAME1));
edit->GetWindowText(str);
unit.setName(str);
edit = reinterpret_cast<CEdit *>(GetDlgItem(IDC_INIT1));
edit->GetWindowText(str);
unit.setInit(str);
edit = reinterpret_cast<CEdit *>(GetDlgItem(IDC_CHP1);
edit->GetWindowText(str);
unit.setCHP(str);
edit = reinterpret_cast<CEdit *>(GetDlgItem(IDC_RHP1));
edit->GetWindowText(str);
unit.setRHP(str);
edit = reinterpret_cast<CEdit *>(GetDlgItem(IDC_COND1+i));
edit->GetWindowText(str);
unit.setCond(str);
units.push_back(unit);

そして、これを使用して、すべてが問題ないかどうかを確認します。

vector<CUnit>::iterator pos = units.begin();
str = *pos->getName();
SetDlgItemText(IDC_NAME2, str );
4

1 に答える 1

0

次のように使用できます。

    str = *(pos->getName());

また

    str = (*pos).getName();

助けてください!

于 2012-05-17T00:52:47.867 に答える