나는이 같은, 내 코드에서 인스턴스의 배열이 있습니다인스턴스 배열에서 삭제되지 않은 인스턴스를 계산하는 방법은 무엇입니까?
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
이 아니라 이 아님). 예를 들어 _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
포인터가 유효한지 확인할 수 없습니다. 원시 포인터를 사용하지 마십시오. –