-1
我與MFC的工作組和我有這個類:
含有類CString成員變量只存儲第一個字母
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獲取值successfuly但是當我在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);
爲什麼不把代碼插入'set'中? –
恩,那麼'套'的東西呢? –
與實際問題無關,但在所有設置的函數中,您應該將一個const引用傳遞給CString,而不是CString值。因此,您避免了不必要的複製。 – MikMik