Всем доброго времени суток!
Вопрос возник, есть некий класс, содержащий в себе буфер ввода-вывода, для класса перегружен оператор []:
class A
{
unsigned char *buffer;
unsigned long buffer_size;
public:
unsigned char &operator[](const int index);
};
unsigned char &A::operator[](const int index)
{
// здесь надо проверить индекс на соответствие размеру буфера
return buffer[index];
}
Весь прикол в том, что вернуть константу вроде как нельзя, ибо возвращается значение по ссылке, можно конечно объявить статическую константу внутри класса, содержащую некий код ошибки, но тут другой момент - как тогда отличить нормальное значение байта в буфере от значения кода ошибки. Есть подозрение, что смотреть надо в сторону обработки исключений, но все-таки решил поспрашивать опытных людей.