Estoy desarrollando una biblioteca en C++ donde los usuarios/programador extenderán una clase BaseClass
que tiene un método initArray
. Este método debe ser implementado por el usuario/programador y normalmente debe inicializar todos los elementos de la matriz m_arr
.Detecta modificación de variable en tiempo de ejecución en C/C++
Aquí es una snipplet, modificado para este ejemplo:
class BaseClass {
public:
BaseClass(int n) {
m_arr = new double[n];
size = n;
};
virtual ~BaseClass();
int size;
double* m_arr;
virtual int initArray();
};
A veces, el usuario/programador implementa un initArray
que no inicializa algunos elementos de m_arr. Lo que me gustaría es crear una función en mi biblioteca que compruebe si initArray
hizo inicializar todos los elementos de m_arr
. Esta función debe invocarse mediante rutinas de verificación de cordura en runtime.
Mi pregunta: ¿es posible detectar cambios en esta matriz? Solo puedo pensar en inicializar la matriz con algunos valores inválidos (como NaN o Inf), llamar al initArray
y verificar que todos los valores hayan cambiado.
Gracias por sus ideas,
David
Editar
Aquí está un ejemplo del código de cliente que estoy tratando de detectar:
// .h:
class MyExample : public BaseClass {
public:
MyExample();
virtual ~MyExample();
virtual int initArray();
};
// .cpp:
MyExample::MyExample() : BaseClass(3) { }
MyExample::~MyExample() { }
int MyExample::initArray() {
m_arr[0] = 10;
//m_arr[1] = 11; // let's say someone forgot this line
m_arr[2] = 12;
return 0;
}
Entonces, al olvidar el m_arr[1]
este elemento no se inicializa y podría causar problemas en cálculos futuros. Eso es lo que me gustaría comprobar.
Claro, haga que m_arr sea privado y proporcione accesodores. –