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

Аналог перегрузки оператора индексирования (operator []) - C++

Восстановить пароль Регистрация
 
I_Masha_I
2 / 2 / 0
Регистрация: 14.10.2012
Сообщений: 53
28.11.2013, 17:56     Аналог перегрузки оператора индексирования (operator []) #1
Как по-другому(то есть в виде обычной функции или как то ещё) можно записать перегрузку оператора индексирования?
Например в моём случае:

C++
1
2
3
4
5
6
float &operator[] (int num);
 
float &Vector2::operator [] (int num)
{
    return _vector[num];
}
Подскажите пожалуйста!!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.11.2013, 17:56     Аналог перегрузки оператора индексирования (operator [])
Посмотрите здесь:

Вопрос по поводу перегрузки оператора + C++
C++ Friend-функции перегрузки оператора
C++ Перегрузка оператора индексирования
C++ Перегрузка оператора индексирования
Ошибка в алгоритме перегрузки оператора присваивания C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
gray_fox
What a waste!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 3
28.11.2013, 18:04     Аналог перегрузки оператора индексирования (operator []) #2
I_Masha_I, никак, operator [] обязан быть нестатическим методом класса. Можно добавить const перегрузку:
C++
1
2
3
float Vector::operator [](std::size_t const index) const {
   // ...
}
I_Masha_I
2 / 2 / 0
Регистрация: 14.10.2012
Сообщений: 53
28.11.2013, 18:27  [ТС]     Аналог перегрузки оператора индексирования (operator []) #3
gray_fox, Спасибо!
А подскажите пожалуйста, что делать, если мне надо определить перегрузку оператора индексирования в двух местах программы, но если я это делаю у меня выскакивает ошибка error lnk2005 что этот оператор уже определён.
gray_fox
What a waste!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 3
28.11.2013, 18:30     Аналог перегрузки оператора индексирования (operator []) #4
I_Masha_I, определение у метода может быть только одно, вам явно что-то другое нужно.
I_Masha_I
2 / 2 / 0
Регистрация: 14.10.2012
Сообщений: 53
28.11.2013, 18:32  [ТС]     Аналог перегрузки оператора индексирования (operator []) #5
gray_fox, а что можно использовать вместо этого?
gray_fox
What a waste!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 3
28.11.2013, 18:36     Аналог перегрузки оператора индексирования (operator []) #6
I_Masha_I, для чего? Если охота
Цитата Сообщение от I_Masha_I Посмотреть сообщение
определить перегрузку оператора индексирования в двух местах программы
то я уже написал, что так делать нельзя - определение всегда должно быть одно.
I_Masha_I
2 / 2 / 0
Регистрация: 14.10.2012
Сообщений: 53
28.11.2013, 18:40  [ТС]     Аналог перегрузки оператора индексирования (operator []) #7
gray_fox, я написала как вы советовали:
C++
1
2
3
4
5
6
7
        float operator[] (size_t const num) const;//оператор индексирования
};
 
float Vector2::operator [] ( size_t const num) const
{
    return _vector[num];
}
но ошибка осталась
gray_fox
What a waste!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 3
28.11.2013, 18:48     Аналог перегрузки оператора индексирования (operator []) #8
I_Masha_I, понял. 3 варианта:
1. перенести определение в файл с исходным кодом
2. сделать operator [] встроенным (inline)
3. определить operator [] при объявлении в классе, тогда он буден считаться встроенным

Добавлено через 4 минуты
+ несоветую писать идентификаторы, начинающиеся с _ (_vector).
I_Masha_I
2 / 2 / 0
Регистрация: 14.10.2012
Сообщений: 53
28.11.2013, 19:05  [ТС]     Аналог перегрузки оператора индексирования (operator []) #9
gray_fox, Спасибо, ошибок больше нет, но теперь при загрузке формы(кусок программы который я добавляла это из рисования куба) работает только рисование куба, а после на форме нельзя нажать ни одну кнопку
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.11.2013, 19:11     Аналог перегрузки оператора индексирования (operator [])
Еще ссылки по теме:

По поводу потока и перегрузки оператора вставки в классе C++
C++ Ошибка из книги оператора перегрузки
Особенонсти перегрузки оператора запятая C++

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

Или воспользуйтесь поиском по форуму:
gray_fox
What a waste!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 3
28.11.2013, 19:11     Аналог перегрузки оператора индексирования (operator []) #10
Цитата Сообщение от I_Masha_I Посмотреть сообщение
теперь при загрузке формы(кусок программы который я добавляла это из рисования куба) работает только рисование куба, а после на форме нельзя нажать ни одну кнопку
Это не ко мне.
Yandex
Объявления
28.11.2013, 19:11     Аналог перегрузки оператора индексирования (operator [])
Ответ Создать тему
Опции темы

Текущее время: 00:14. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru