我有实例的数组,在我的代码,像这样:如何计算实例数组中未删除的实例?
class Squad : public ISquad
{
public:
Squad(void);
Squad(Squad const & src);
virtual ~Squad(void);
int getCount(void) const;
int push(ISpaceMarine*);
ISpaceMarine* getUnit(int) const;
ISpaceMarine** getUnits(void) const;
int getCapacity(void) const;
Squad & operator=(Squad const & rhs);
private:
ISpaceMarine **_units; // HERE IS THE ARRAY OF INSTANCES
int const _squadCapacity;
};
初始化像这样在构造
Squad::Squad(void) : _units(new ISpaceMarine*[64]), _squadCapacity(64)
{
return;
}
首先,是的好办法吗?
如果是,我尝试计算数组中有效实例的数量(不是NULL
,而不是deleted
),但我不知道如何检查_units[20]
是否被删除。
我该怎么办?
他是我目前做的方式:
int Squad::getCount(void) const
{
int count = 0;
while (this->_units[count] != NULL && count < this->_squadCapacity)
count++;
return count;
}
的可能性? 'std :: list'似乎是合适的。 – JHBonarius
您无法检查指针的目标是否被删除。删除后直接将其设置为NULL即可。或者从列表中删除它。或使用智能指针。 – flyx
您不能检查指针是否有效。不要使用原始指针。 –