Я разрабатываю библиотеку на C++, где пользователи/программисты будут расширять класс BaseClass
, который имеет метод initArray
. Этот метод должен быть реализован пользователем/программистом, и он должен нормально инициализировать все элементы массива m_arr
.Обнаружить изменение переменной во время выполнения в C/C++
Вот snipplet, модифицированный в этом примере:
class BaseClass {
public:
BaseClass(int n) {
m_arr = new double[n];
size = n;
};
virtual ~BaseClass();
int size;
double* m_arr;
virtual int initArray();
};
Иногда пользователь/программист реализует initArray
, который не инициализирует некоторые элементы m_arr. Я хотел бы создать функцию в моей библиотеке, которая проверит, выполнил ли initArray
все элементы m_arr
. Эта функция должна быть вызвана службой проверки работоспособности по адресу времени выполнения.
Мой вопрос: можно ли обнаружить изменения в этом массиве? Я могу только подумать об инициализации массива с некоторыми недопустимыми значениями (например, NaN или Inf), вызовите initArray
и проверьте, что все значения изменены.
Спасибо за ваши идеи,
Дэвид
Редактировать
Вот пример клиентского кода, который я пытаюсь обнаружить:
// .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;
}
Итак, забыв m_arr[1]
этот элемент не инициализирован и может вызвать проблемы при будущих вычислениях. Это то, что я хотел бы проверить.
Несомненно, сделайте m_arr частным и предоставите аксессуар. –