宣言と言うかoperator[]内で、

#ifdef DEBUG
{
 int n = sizeof(a) / sizeof(a[0]);
 if(index < 0 || index >= n){ throw(hogehoge); }
}
#endif
return a[index];

とかしたら?