Classe de CComSafeArray
Essa classe é um wrapper para a estrutura de SAFEARRAY .
template <
typename T,
VARTYPE _vartype = _ATL_AutomationType< T >::type
>
class CComSafeArray
Parâmetros
- T
O tipo de dados a serem armazenados na matriz.
Membros
Construtores public
Nome |
Descrição |
---|---|
o construtor. |
|
O destrutor. |
Métodos públicos
Nome |
Descrição |
---|---|
Adiciona um ou mais elementos, ou uma estrutura de SAFEARRAY , a CComSafeArray. |
|
Anexar uma estrutura de SAFEARRAY a um objeto de CComSafeArray . |
|
Copia o conteúdo de uma estrutura de SAFEARRAY no objeto de CComSafeArray . |
|
Cria uma cópia do objeto de CComSafeArray . |
|
Cria um objeto de CComSafeArray . |
|
For um objeto de CComSafeArray . |
|
Dispara SAFEARRAY de um objeto de CComSafeArray . |
|
Recupera um único elemento de uma matriz unidimensional. |
|
Retorna o número de elementos na matriz. |
|
Retorna o número de dimensões na matriz. |
|
Retorna o limite inferior para uma determinada dimensão da matriz. |
|
Retorna o endereço do membro de dados de m_psa . |
|
Retorna o tipo de dados armazenados na matriz. |
|
Retorna o limite superior de cada dimensão da matriz. |
|
Teste se um objeto de CComSafeArray pode ser redimensionado. |
|
Recupera um único elemento de uma matriz multidimensional. |
|
Defina o valor de um elemento em uma matriz multidimensional. |
|
Redimensiona um objeto de CComSafeArray . |
|
Defina o valor de um elemento em uma matriz unidimensional. |
Operadores públicos
Nome |
Descrição |
---|---|
Converter um valor a um ponteiro de SAFEARRAY . |
|
Recupera um elemento de matriz. |
|
Operador de atribuição. |
Membros públicos de dados
Nome |
Descrição |
---|---|
Este membro de dados contém o endereço da estrutura de SAFEARRAY . |
Comentários
CComSafeArray fornece um wrapper para a classe de SAFEARRAY Data Type , tornando-o o uma simples questão criar e gerenciar único e matrizes multidimensionais de praticamente de tipos Variante- suportados.
CComSafeArray simplifica transmissão matrizes entre processos, e além fornece segurança adicional verificar valores de índice de matriz em relação aos limites superior e inferior.
O limite inferior de CComSafeArray pode começar em qualquer valor definido pelo usuário; no entanto, as matrizes que são acessados com C++ devem usar um limite inferior de 0.Outros idiomas como Visual Basic podem usar outros valores delimitador (por exemplo, -10 a 10).
Use CComSafeArray::Create para criar um objeto de CComSafeArray , e CComSafeArray::Destroy para excluí-lo.
CComSafeArray pode conter o seguinte subconjunto de tipos de dados VARIANTES:
VARTYPE |
Descrição |
---|---|
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 |
ponto decimal |
VT_VARIANT |
ponteiro variante |
VT_CY |
tipo de dados Currency |
Requisitos
Cabeçalho: atlsafe.h
Exemplo
// 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]);
}
}