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

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

Войти
Регистрация
Восстановить пароль
 
lulusa
0 / 0 / 0
Регистрация: 04.10.2013
Сообщений: 12
#1

Перегрузка оператора -> - C++

28.04.2014, 18:44. Просмотров 240. Ответов 7
Метки нет (Все метки)

Здравствуйте, мне нужно реализовать перегрузку operator-> .Как реализован оператор ->? Что он делает понятно, а как?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.04.2014, 18:44
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Перегрузка оператора -> (C++):

Перегрузка оператора [][] - C++
допустим у меня есть клас Matrix и я хочу опедилить оператор доступа к его елементу как реализовть оператор если простой масив я знаю а...

Перегрузка оператора ++ - C++
выводит не то значение привет. нужна Ваша подсказка. листинг из учебника: (тема: перегрузка оператора ++) #include <iostream> ...

Перегрузка оператора << - C++
Добрый пень! подскажите как написать код для реалилизации следующего требования: SpecialPrint &lt;&lt; &quot;text&quot; &lt;&lt; 'a' &lt;&lt; 1; ...

Перегрузка оператора - C++
При вызове оператора, и если F1.x &lt;= 0, то пишет текст 'N' должно быть &gt; 0, после чего выводит расчеты по формуле. Но мне этого не...

Перегрузка оператора [] - C++
Есть: class any{ char arr }

Перегрузка оператора + - C++
Доброго времени суток. Есть программа, создающая связный список, который содержит числа по возрастанию #include &lt;iostream&gt; enum...

7
Меорн
74 / 59 / 29
Регистрация: 01.02.2014
Сообщений: 203
28.04.2014, 18:56 #2
видимо как-то так:
C++
1
2
3
4
5
6
7
struct test 
{
    int a, b, c;
    test operator-> () {
        return *this;
    }
};
он работает.
0
zss
Модератор
Эксперт С++
6693 / 6255 / 2084
Регистрация: 18.12.2011
Сообщений: 16,332
Завершенные тесты: 1
28.04.2014, 20:31 #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class X
{
int x;
public:
X(int x0){x=x0;}
int GetX(){return x;}
};
class spX
{
X* p;
public:
   spX(X* pX){p=pX;}
  X* operator->(){return p;}
};
int main()
{
   X x(5);X* px=&x;
   spX spxObj(px);
   int res=spxObj->GetX(); // умный указатель
}
0
lulusa
0 / 0 / 0
Регистрация: 04.10.2013
Сообщений: 12
28.04.2014, 20:34  [ТС] #4
Меорн, а как работает -> ?
0
Croessmah
Пришел
Эксперт CЭксперт С++
13759 / 7839 / 893
Регистрация: 27.09.2012
Сообщений: 19,247
Записей в блоге: 3
Завершенные тесты: 1
28.04.2014, 20:46 #5
Цитата Сообщение от Меорн Посмотреть сообщение
он работает.
уверены?
0
lulusa
0 / 0 / 0
Регистрация: 04.10.2013
Сообщений: 12
28.04.2014, 20:46  [ТС] #6
zss, о, как раз по той теме, что мне сказали написать ("умный" указатель). Однако мне не понятно, как оно работает. Вот например, если я для класса X перегружу оператор+, то при вызове запись A + B равносильна A.operator+ (B).
Здесь же, оператор -> не имеет аргумента. Запись
C++
1
spxObj->GetX(); // spxObj.(operator->) GetX (); // </*какой-то указатель*/>  GetX ();
мне не очень понятна, получается, что в какой-то момент у нас есть несвязное выражение указатель-метод. Как компилятор понимает, что здесь надо перейти по этому самому указателю, а затем использовать оператор доступа (т.е. точку) к методу GetX (); Мы же вроде явно это нигде не прописываем!
0
Croessmah
Пришел
Эксперт CЭксперт С++
13759 / 7839 / 893
Регистрация: 27.09.2012
Сообщений: 19,247
Записей в блоге: 3
Завершенные тесты: 1
28.04.2014, 20:48 #7
Цитата Сообщение от lulusa Посмотреть сообщение
Здесь же, оператор -> не имеет аргумента.
на выходе получается что-то типа этого:
C++
1
obj.operator->() -> member
то есть operator-> должен возвращать указатель или что-то, для чего так же имеется ->
0
zss
Модератор
Эксперт С++
6693 / 6255 / 2084
Регистрация: 18.12.2011
Сообщений: 16,332
Завершенные тесты: 1
28.04.2014, 20:53 #8
Цитата Сообщение от lulusa Посмотреть сообщение
spxObj.operator->()->GetX ();
Для объекта spxObj вызывается метод operator->(),
который возвращает указатель px.
Далее используем обычную стрелку px->GetX();
0
28.04.2014, 20:53
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.04.2014, 20:53
Привет! Вот еще темы с ответами:

Перегрузка оператора == - C++
Пытаюсь перегрузить оператор == . Делаю так: В классе: class cData // класс дата { int year; // год short mounth; //...

Перегрузка оператора + - C++
Не могу заставить работать перегруженный оператор + в функции CMoveByVector Point.h: #define POINT_H #include &lt;iostream&gt; ...

Перегрузка оператора + - C++
Всем привет, проблема на этот раз такая. Для того, чтобы выучить классы, я пишу некое подобие класса string. Сложность вот в чем. Возникла...

Перегрузка оператора + - C++
не получается в своем классе перегрузить оператор + :( пишет &quot;error C2804: бинарный &quot;operator +&quot; имеет слишком много параметров&quot;,...


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

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

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