共用方式為


CComSafeArray 類別

這個類別是 SAFEARRAY 結構的包裝函式。

template <
   typename T,
   VARTYPE _vartype = _ATL_AutomationType< T >::type
>
class CComSafeArray

參數

  • T
    在陣列中儲存的資料型別。

Members

3xzbsee8.collapse_all(zh-tw,VS.110).gif公用建構函式

名稱

描述

CComSafeArray::CComSafeArray

建構函式。

CComSafeArray::~CComSafeArray

解構函式。

3xzbsee8.collapse_all(zh-tw,VS.110).gif公用方法

名稱

描述

CComSafeArray::Add

將一或多個元素或一 SAFEARRAY 結構,為 CComSafeArray

CComSafeArray::Attach

附加 SAFEARRAY 結構。 CComSafeArray 物件。

CComSafeArray::CopyFrom

複製 SAFEARRAY 結構的內容插入 CComSafeArray 物件。

CComSafeArray::CopyTo

建立 CComSafeArray 物件的複本。

CComSafeArray::Create

建立 CComSafeArray 物件。

CComSafeArray::Destroy

終結 CComSafeArray 物件。

CComSafeArray::Detach

中斷連結 CComSafeArray 物件的 SAFEARRAY

CComSafeArray::GetAt

從一維陣列擷取單一項目。

CComSafeArray::GetCount

傳回項目的參數數目等於陣列中的。

CComSafeArray::GetDimensions

傳回維度的參數數目等於陣列中的。

CComSafeArray::GetLowerBound

傳回陣列中的某個特定維度的下限。

CComSafeArray::GetSafeArrayPtr

傳回 m_psa 資料成員的位址。

CComSafeArray::GetType

傳回陣列中儲存的資料型別。

CComSafeArray::GetUpperBound

傳回陣列的所有維度的上限 (Upper Bound)。

CComSafeArray::IsSizable

測試,如果 CComSafeArray 物件可調整大小。

CComSafeArray::MultiDimGetAt

從多維陣列擷取單一項目。

CComSafeArray::MultiDimSetAt

設定項目的值在多維陣列。

CComSafeArray::Resize

調整大小 CComSafeArray 物件。

CComSafeArray::SetAt

設定項目的值在一維陣列中。

3xzbsee8.collapse_all(zh-tw,VS.110).gif公用運算子

名稱

描述

CComSafeArray::operator LPSAFEARRAY

將值轉型為 SAFEARRAY 指標。

CComSafeArray::operator []

從陣列中擷取項目。

CComSafeArray::operator =

指派運算子。

3xzbsee8.collapse_all(zh-tw,VS.110).gif公用資料成員

名稱

描述

CComSafeArray::m_psa

這個資料成員保存 SAFEARRAY 結構的位址。

備註

CComSafeArraySAFEARRAY Data Type 類別提供包裝函式,使其成為的簡單事宜建立和管理單一和多維度陣列幾乎任何 Variant 支援的型別。

此外CComSafeArray 簡化傳遞陣列在處理序之間和透過檢查陣列索引值提供額外的安全性物件的上限和下限。

CComSafeArray 下限可以開始在任何使用者定義的值,不過,您可以將 C++ 存取陣列應該使用其下限為 0。 其他語言 (例如 Visual Basic 可能使用其他繫結值 (例如, -10 至 10)。

使用 CComSafeArray::Create 建立 CComSafeArray 物件和 CComSafeArray::Destroy 刪除它。

CComSafeArray 可以包含不同的資料型別的下列部分:

VARTYPE

描述

VT_I1

char

VT_I2

short

VT_I4

int

VT_I4

long

VT_I8

longlong

VT_UI1

byte

VT_UI2

ushort

VT_UI4

uint

VT_UI4

ulong

VT_UI8

ulonglong

VT_R4

float

VT_R8

double

VT_DECIMAL

十進位指標

VT_VARIANT

不同的指標。

VT_CY

貨幣資料型別

需求

Header: atlsafe.h

範例

// Create a multidimensional array, 
// then write and read elements

// Define an array of character pointers
CComSafeArray<char> *pSar;

char cElement;
char cTable[2][3] = {'A','B','C','D','E','F'};

// Declare the variable used to store the
// array indexes
LONG aIndex[2];

// Define the array bound structure
CComSafeArrayBound bound[2];
bound[0].SetCount(3);
bound[0].SetLowerBound(0);
bound[1].SetCount(3);
bound[1].SetLowerBound(0);   

// Create a new 2 dimensional array
// each dimension size is 3
pSar = new CComSafeArray<char>(bound,2); 

// Use MultiDimSetAt to store characters in the array
for (int x = 0; x < 2; x++)
{
   for (int y = 0; y < 3; y++)
   {
      aIndex[0] = x;
      aIndex[1] = y;
      HRESULT hr = pSar->MultiDimSetAt(aIndex,cTable[x][y]);
      ATLASSERT(hr == S_OK);
   }
}
// Use MultiDimGetAt to retrieve characters in the array
for (int x = 0; x < 2; x++)
{
   for (int y = 0; y < 3; y++)
   {
      aIndex[0]=x;
      aIndex[1]=y;
      HRESULT hr = pSar->MultiDimGetAt(aIndex,cElement);
      ATLASSERT(hr == S_OK);
      ATLASSERT(cElement == cTable[x][y]);
   }   
}

請參閱

參考

SAFEARRAY Data Type

CComSafeArray::Create

CComSafeArray::Destroy

其他資源

ATL 類別概觀