2016-11-16 1 views
0

Я пытаюсь создать защищенный переполнение массива C++. я построил очень хорошую систему (используя класс + шаблон), который защищает доступ к следующему виду Допустим, я поставилПостроение массива с «безопасной» точечной арифметикой

ProtectedArray<int,15> A;  

Так что, если я стараюсь идти в A [16] так:

A[16]=10; 

он бросает мне исключение. Я хочу создать такую ​​ситуацию, что если я пытаюсь сделать

int * a = &A; 
a += 16; 
a = 13; 

быть брошено исключение, это вообще возможно сделать это? (Предполагалось, что в тот момент, когда я поставил указатель на массив, у меня нет «управления» на нем) ...

* Я реализовал в классе переопределение [] (так что я смогу позвонить A [10]), , И & (для получения указателя на базу)

+3

Нет, это невозможно. –

ответ

1

По существу, когда вы конвертируете тип в указатель целых чисел, вы теряете весь контроль над этим типом - он становится точно таким же, как стандартный C++ int * (который, очевидно, не включает проверка границ).

Смежные вопросы