(Контроль переменных)
Можно. И нужно. Но для скалярных переменных это обычно делает сам компилятор (может не любой, не знаю, Дельфи точно делает). Вот с векторами (и вообще сложными структурами данных) контроль накладен и потому ради быстродействия им жертвуют, оставляя на программиста (как раз как Вы и сделали, через свои классы). Возможно есть языки и с таким встроенным контролем, сейчас не вспомню.
(Мелкий совет по отладке)
svvА если будете подобные методы контроля применять не разово, а часто и в своих программах, то удобно сделать контроль отключаемым по
#define/if[n]def. Тогда после отладки меняете пару символов и после перекомпиляции получаете нормальную быструю программу. Часто в среде уже есть переменная DEBUG, осталось лишь её проверить. Собственно это стандартный подход ...