CAutoVectorPtr クラス

このクラスは、ベクトルの new および delete 演算子を使用してスマート ポインター オブジェクトを表します。

重要

このクラスとそのメンバーは、Windows ランタイムで実行するアプリケーションで使用することはできません。

構文

template<typename T>
class CAutoVectorPtr

パラメーター

T
ポインター型。

メンバー

パブリック コンストラクター

名前 説明
CAutoVectorPtr::CAutoVectorPtr コンストラクター。
CAutoVectorPtr::~CAutoVectorPtr デストラクター。

パブリック メソッド

名前 説明
CAutoVectorPtr::Allocate このメソッドを呼び出して、CAutoVectorPtr がポイントするオブジェクトの配列に必要なメモリを割り当てます。
CAutoVectorPtr::Attach 既存のポインターの所有権を取得するには、このメソッドを呼び出します。
CAutoVectorPtr::Detach ポインターの所有権を解放するには、このメソッドを呼び出します。
CAutoVectorPtr::Free CAutoVectorPtr によってポイントされるオブジェクトを削除するには、このメソッドを呼び出します。

パブリック演算子

名前 説明
CAutoVectorPtr::operator T * キャスト演算子。
CAutoVectorPtr::operator = 代入演算子。

パブリック データ メンバー

名前 説明
CAutoVectorPtr::m_p ポインター データ メンバー変数。

解説

このクラスは、スマート ポインターを作成および管理するためのメソッドを提供します。これは、リソースがスコープ外になった場合にリソースを自動的に解放して、メモリ リークから保護するのに役立ちます。 CAutoVectorPtrCAutoPtr に似ています。唯一の違いは、CAutoVectorPtr は、C++ の new および delete 演算子ではなく、vector new[]vector delete[] を使用してメモリを割り当てたり、解放したりする点です。 CAutoVectorPtr のコレクション クラスが必要な場合は、CAutoVectorPtrElementTraitsに関するページを参照してください。

スマート ポインター クラスの使用例については、CAutoPtr に関するページを参照してください。

必要条件

ヘッダー: atlbase.h

CAutoVectorPtr::Allocate

このメソッドを呼び出して、CAutoVectorPtr がポイントするオブジェクトの配列に必要なメモリを割り当てます。

bool Allocate(size_t nElements) throw();

パラメーター

nElements
配列内の 要素の数。

戻り値

メモリが正常に割り当てられている場合は true、失敗した場合は false が返されます。

解説

デバッグ ビルドでは、CAutoVectorPtr::m_p メンバー変数が、現在既存の値をポイントしている場合、つまり、NULL と等しくない場合、アサーション エラーが発生します。

CAutoVectorPtr::Attach

既存のポインターの所有権を取得するには、このメソッドを呼び出します。

void Attach(T* p) throw();

パラメーター

P
CAutoVectorPtr オブジェクトは、このポインターの所有権を取得します。

解説

オブジェクトが CAutoVectorPtr ポインターの所有権を取得すると、ポインターと割り当て済みのデータがスコープ外に出た場合に自動的に削除されます。 CAutoVectorPtr::Detach が呼び出された場合、プログラマーには、割り当て済みのリソースを解放する責任が再び与えらます。

デバッグ ビルドでは、CAutoVectorPtr::m_p メンバー変数が、現在既存の値をポイントしている場合、つまり、NULL と等しくない場合、アサーション エラーが発生します。

CAutoVectorPtr::CAutoVectorPtr

コンストラクター。

CAutoVectorPtr() throw();
explicit CAutoVectorPtr(T* p) throw();
CAutoVectorPtr(CAutoVectorPtr<T>& p) throw();

パラメーター

P
既存のポインター。

解説

オブジェクト CAutoVectorPtr は、既存のポインターを使用して作成できます。その場合、これによりポインターの所有権が転送されます。

CAutoVectorPtr::~CAutoVectorPtr

デストラクター。

~CAutoVectorPtr() throw();

解説

割り当てられたすべてのリソースを解放します。 CAutoVectorPtr::Free を呼び出します。

CAutoVectorPtr::Detach

ポインターの所有権を解放するには、このメソッドを呼び出します。

T* Detach() throw();

戻り値

ポインターのコピーを返します。

解説

ポインターの所有権を解放し、CAutoVectorPtr::m_p メンバー変数を NULL に設定し、ポインターのコピーが返されます。 Detach を呼び出した後、CAutoVectorPtr オブジェクトが以前に保持していた可能性がある割り当て済みのリソースを解放するのはプログラマーの責任です。

CAutoVectorPtr::Free

CAutoVectorPtr によってポイントされるオブジェクトを削除するには、このメソッドを呼び出します。

void Free() throw();

解説

CAutoVectorPtr によってポイントされるオブジェクトが解放され、CAutoVectorPtr::m_p メンバー変数が NULL に設定されます。

CAutoVectorPtr::m_p

ポインター データ メンバー変数。

T* m_p;

解説

このメンバー変数により、ポインター情報が保持されます。

CAutoVectorPtr::operator =

代入演算子。

CAutoVectorPtr<T>& operator= (CAutoVectorPtr<T>& p) throw();

パラメーター

P
ポインター。

戻り値

CAutoVectorPtr< T > への参照が返されます。

解説

代入演算子により、現在のポインターから CAutoVectorPtr オブジェクトがデタッチされ、その代わりに新しいポインター p がアタッチされます。

CAutoVectorPtr::operator T *

キャスト演算子。

operator T*() const throw();

解説

クラス テンプレートで定義されているオブジェクト データ型にポインターが返されます。

関連項目

CAutoPtr クラス
クラスの概要