Sto sviluppando una libreria in C++ in cui gli utenti/programmatori estenderanno una classe BaseClass
che ha un metodo initArray
. Questo metodo dovrebbe essere implementato dall'utente/programmatore e normalmente dovrebbe inizializzare tutti gli elementi dell'array m_arr
.Rileva modifica della variabile in fase di esecuzione in C/C++
Ecco una snipplet, modificato per questo esempio:
class BaseClass {
public:
BaseClass(int n) {
m_arr = new double[n];
size = n;
};
virtual ~BaseClass();
int size;
double* m_arr;
virtual int initArray();
};
A volte, l'utente/programmatore implementa una initArray
che non inizializza alcuni elementi di m_arr. Quello che vorrei è creare una funzione nella mia libreria che controlli se initArray
ha inizializzato tutti gli elementi di m_arr
. Questa funzione deve essere richiamata da una routine di controllo di integrità al runtime .
La mia domanda: è possibile rilevare le modifiche su questo array? Posso solo pensare di inizializzare l'array con alcuni valori non validi (come NaN o Inf), chiamare initArray
e controllare che tutti i valori siano cambiati.
Grazie per le vostre idee,
David
Modifica
Ecco un esempio del codice client che sto cercando di rilevare:
// .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;
}
Quindi, dimenticando lo m_arr[1]
questo elemento non è inizializzato e potrebbe causare problemi nei calcoli futuri. Questo è quello che vorrei controllare.
Certo, rendere privato m_arr e fornire accessors. –