El siguiente ejemplo muestra como crear un objeto objMyData de la clase CDataClass para luego ser referenciado mediante de un puntero constante dataPointer.
La clase CDataClass simplemente asigna memoria a un array de datos de tipo double y lo referencia mediante el puntero m_pDatos, así mismo esta clase tiene un método privado CargarDatos que asigna un dato a cada elemento del array, ademas la clase proporciona dos métodos públicos GetNumElem el cual retorna el número de elementos del array y GetElem que devuelve el elemento del array del indice correspondiente.
El programa es el siguiente:
#include <iostream>
using namespace std;
class CDataClass
{
public:
// Constructor
CDataClass(int iNumElem)
: m_iNumElem(iNumElem)
, m_pDatos(NULL)
{
// Asignar memoria dinamica
m_pDatos = new double[m_iNumElem];
// Cargar datos en el array
CargarDatos();
}
// Destructor
~CDataClass()
{
// Liberar la memoria asignada
delete []m_pDatos;
}
// Atributos
private:
int m_iNumElem; // Número de elementos del array
double * m_pDatos; // Puntero al array de datos
// Metodos
private:
void CargarDatos(void)
{
for(int i = 0; i < m_iNumElem; i++)
m_pDatos[i] = i * 100;
}
public:
int GetNumElem(void){ return m_iNumElem; }
double GetElem(int ind){ return m_pDatos[ind]; }
};
int main(void)
{
const int iNumElem = 10;
// Creamos un objeto
CDataClass objMyData(iNumElem);
// Podemos referenciar al objeto mediante un puntero constante
CDataClass *const dataPointer = &objMyData;
// Creamos un array de datos double
double
arDatos[iNumElem];
// Copiamos los datos del objeto referenciado por dataPointer
for(int i = 0; i < dataPointer->GetNumElem(); i++)
{
arDatos[i] = dataPointer->GetElem(i);
cout << "Dato " << i << "\t" << arDatos[i] << endl;
}
cout << "\n";
// presionar una tecla para salir
system("pause");
return
EXIT_SUCCESS;
}
La salida por pantalla del programa es lo siguiente: