私はこのように、私のコードでインスタンスの配列を持っている:インスタンスの配列で削除されなかったインスタンスを数える方法は?
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
ポインタが有効かどうかを確認することはできません。生ポインタを使用しないでください。 –