Ну, если в массиве адрес (непонятно только, почему он из чаров?), то делай явное приведение типа перед присваиванием, т.е.
_pointer_ = (unsigned char *)(A[0].....);
По второму вопросу: а если массив не const, тоже такой эффект? И зачем создавать такие странные конструкции? Не лучше ли ввести вместо временного counter временный unsigned char *p = A; а потом икрементировать его и обращаться к нужному элементу массива?