Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.77
Trydorg
1 / 1 / 0
Регистрация: 23.03.2011
Сообщений: 25
#1

Перегрузка квадртных скобок [] - C++

25.09.2011, 21:40. Просмотров 1725. Ответов 3
Метки нет (Все метки)

Мое почтение, уважаемые форумчане!
Столкнулся с неразрешимой проблемой в ходе написания шаблонного массива-контейнера.
Перегружаю квадратные скобки следующим образом:
C++
1
2
3
4
template<typename T, int startSize> T& Array<T, startSize>::operator [] (int index)
{
    return elements[index];
}
Все хорошо. Но как быть с ситуацией, когда на той неведомой стороне, где будет использоваться мой массив, индекс случайно выйдет за границы позволенного? Проверку в оператор я могу вставить, но как решить вопрос с возвращаемым ею значением, которое должно быть скорее bool, нежели некое T&?
Заранее спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.09.2011, 21:40
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Перегрузка квадртных скобок [] (C++):

Перегрузка скобок для указателя - C++
Здраствуйте. Написал небольшой код, всё работает, но не знаю как при динамическом вызове можно было просто использовать a, a... вместо...

Перегрузка круглых скобок как ravalue - C++
Не могу понять, как перегрузить () для того чтобы можно было использовать a(1, 2)=2; вместо a=3; ошибся, наверное не rvalue, а...

Перегрузка в виде метода VS Перегрузка в виде функции друг - C++
Привет! Собственно сабж: В каких случаях используется перегрузка в виде метода, а когда в виде функции друг? Добавлено через 4...

Множественное наследование, Перегрузка функций, Перегрузка операторов, Использование дружественных функций и классов, Использование шаблонов классов - C++
Здравствуйте!!! Я бы хотел попросить помоч решить...ну или скинуть примеры таких задач, если вдруг у вас они завалялись на компе или...

Баланс скобок - C++
Добавьте плиз условие чтоб )(-говорило что не баланс..я прост незнаю #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;conio.h&gt; ...

Замена скобок - C++
Почему-то открывающая скобка '(' - нормально заменяется, а закрывающая не меняется вовсе. В чем дело? Вот код: string GetPage(string...

3
emilen
10 / 10 / 0
Регистрация: 25.05.2010
Сообщений: 52
25.09.2011, 21:47 #2
Обычно в перегрузке оператора [] этого не делают, а делают специальный метод at, который проверяет выход за границы выделенной памяти для контейнера. Оператор [] у вас выглядит правильно . При выходи за пределы в методе at вызовите исключение (throw). Так сделано в STL.
1
Trydorg
1 / 1 / 0
Регистрация: 23.03.2011
Сообщений: 25
25.09.2011, 21:57  [ТС] #3
emilen, спасибо.
Проверил на vector, реально падает при вызове оператора с индексом за границами выделенной памяти.
0
rangerx
1935 / 1544 / 141
Регистрация: 31.05.2009
Сообщений: 2,913
25.09.2011, 22:38 #4
Цитата Сообщение от Trydorg Посмотреть сообщение
C++
1
int startSize
C++
1
std::size_t startSize
Цитата Сообщение от Trydorg Посмотреть сообщение
C++
1
int index
аналогично
C++
1
std::size_t index
Добавлено через 6 минут
Что такое size_t и ptrdiff_t
2
25.09.2011, 22:38
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.09.2011, 22:38
Привет! Вот еще темы с ответами:

Баланс скобок - C++
Люди может укажите мне на ошибку в программе по которой не находит баланс..? #include&lt;iostream.h&gt; #include&lt;string.h&gt; ...

Баланс скобок - C++
Помогите пожалуйста!!! Собственно задание: Текст в файле содержит многократно вложенные круглые скобки. Если баланс скобок соблюден,...

Выражения из скобок - C++
Построить все правильные скобочные выражения . На входе число - на выходе все строки Например 2 () 4 ()() (()) 6 ()()() ...

[C++] Синтаксис скобок - C++
Здравствуйте, вот задача: Используя стек, определить функцию проверки правильности расстановки скобок в алгебраическом выражении....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru