我得到了如下C++的指針失去指針引用
class Investment
{
private:
void init(BWAPI::UnitType type1, BWAPI::UpgradeType type2, BWAPI::TechType type3, int numOfItems);
UpgradeType upgradeType;
TechType techType;
UnitType unitType;
描述了一類,我的init()方法就是這樣
void Investment::init(BWAPI::UnitType type1, BWAPI::UpgradeType type2, BWAPI::TechType type3, int numOfItems)
{
if (type1 != NULL) {
this->unitType = type1;
this->type = type1.isBuilding() ? BUILDING_TYPE : UNIT_TYPE;
} else if (type2 != NULL) {
this->upgradeType = type2;
this->type = UPGRADE_TYPE;
} else if (type3 != NULL) {
this->techType = type3;
this->type = TECH_TYPE;
}
this->numOfItems = numOfItems;
}
,我得到我的項目(可以是隻有一個三種可能的類型)這樣
const void* Investment::getItem() const
{
if (unitType != NULL)
return &unitType;
else if (upgradeType != NULL)
return &upgradeType;
else if (techType != NULL)
return &techType;
return NULL;
}
但什麼時候我得到發生在項目使用UnitType* type = (UnitType*) investment->getItem();
指針失去值
當我打電話type->getName().c_str();
它返回一個空字符串
獲得投資我所說的堆疊的方法
// I have a stack of type std::vector<T*> stack;
T* getNext() {
clear();
for (int i = 0, leni = stack.size(); i < leni; i++) {
T* t = stack.at(i);
if (!t->isDone() && !t->isCanceled())
return t;
}
return NULL;
}
代碼的顯示使用 –
有人能幫助????? – thiagoh
爲什麼'GETNEXT()''調用清除()'? 'clear()'做什麼?你知道一個事實,即'investment.getItem()'應該返回一個'UnitType',而不是其他的東西(像'UpgradeType'或'TechType')?你怎麼知道這一點? – Chad