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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
Sillent Div
0 / 0 / 1
Регистрация: 13.07.2013
Сообщений: 60
#1

Перегрузка оператора "стрелка" - C++

19.01.2014, 19:08. Просмотров 1277. Ответов 4
Метки нет (Все метки)

Как через класс type вызвать функцию move класса pr при условии, что оператор стрелка в классе type не перегружен.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
 
class pr
{
public:
int move (int, int);
};
 
int pr::move(int a,  int b)
{
int d;
d=a+b;
return d;
};
 
class type
{
public:
 type(pr &s) : uk( &s ) { };
 pr& operator*()  { return *uk; } ;
 pr* operator->() { return uk; };
private:
pr *uk;
};
void __fastcall TForm1::Button1Click(TObject *Sender)
{
pr t;
type f(t);
Edit1->Text=IntToStr(f->move(2,8));
}
//---------------------------------------------------------------------------
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.01.2014, 19:08     Перегрузка оператора "стрелка"
Посмотрите здесь:

Перегрузка оператора "+", чтобы выполнял "*" - C++
Ребят, привет всем, возник такой вопрос: возможно ли перегрузить оператор &quot;+&quot; так, чтоб выполнялось умножение? Например вводится...

Перегрузка оператора "<<" для вывода пользовательских классов - C++
Всем доброго времени суток. Пытаюсь сделать перегрузку оператора &quot;&lt;&lt;&quot; для того, чтобы можно было выводить объекты пользовательского класса...

Перегрузка операторов: Можно ли вынести "тело" оператора (расчеты) из H в CPP? - C++
Помогите новичку! Пишу класс и вынес его в отдельные файлы *.CPP и *.H Теперь пытаюсь переопределить операторы. Начал с = По примеру...

Перегрузка оператора вывода в классе "Время" - C++
Здравствуйте. Столкнулся с проблемой при работе с классом (Время), что выводит или чушь или вообще ничего не выводит. Прописал (вроде бы) 1...

Перегрузка оператора "+" в шаблоне класса - C++
Не работает + для суммы объектов различного типа данного класса. Для одного типа все нормально. Как можно это исправить? (класс...

Перегрузка оператора "-" (вычитание матриц) - C++
Нужно сделать вычитание матриц. class massiv { public: massiv(void); massiv(int,int,bool);// n m 1(ввод самим)или0(ввод...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
gray_fox
What a waste!
1446 / 1175 / 61
Регистрация: 21.04.2012
Сообщений: 2,463
Завершенные тесты: 3
19.01.2014, 19:58     Перегрузка оператора "стрелка" #2
Цитата Сообщение от Sillent Div Посмотреть сообщение
Как через класс type вызвать функцию move класса pr при условии, что оператор стрелка в классе type не перегружен.
C++
1
(*f).move(...);
Sillent Div
0 / 0 / 1
Регистрация: 13.07.2013
Сообщений: 60
19.01.2014, 20:36  [ТС]     Перегрузка оператора "стрелка" #3
а без перегрузки оператора *, вызвать move через type не получится?
gray_fox
What a waste!
1446 / 1175 / 61
Регистрация: 21.04.2012
Сообщений: 2,463
Завершенные тесты: 3
19.01.2014, 20:49     Перегрузка оператора "стрелка" #4
Sillent Div, можно "хаком", примерно
C++
1
2
pr * uk = reinterpret_cast<pr *>(reinterpret_cast<unsigned char *>(&f) + offsetof(type, uk));
uk->move(...);
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.01.2014, 11:17     Перегрузка оператора "стрелка"
Еще ссылки по теме:

Перегрузка оператора "=" для AnsiString - C++
Вообщем необходимо сделать перегрузку для формирования строки и присваивания ее в переменную типа AnsiString: class MyClass { ...

Перегрузка оператора "&" - C++
Нужна помощь! Нужно перегрузить оператор &amp;, чтобы он складывал исходный список и список, полученный перегрузкой оператора --, который...

Перегрузка оператора "+" в классе - C++
Hello!! Я создаю класс двумерного массива. Использую данный код: template &lt;typename T&gt; class Array2D { public: //...

Перегрузка оператора ввода ">>" - C++
нужно перегрузить оператор ввода для класса Comp? перегрузил, но выдается ошибка error C2248: 'std::basic_ios&lt;_Elem,_Traits&gt;::basic_ios'...

Перегрузка оператора "+" с шаблонами - C++
нужно написать перегрузку оператора +, который объединяет 2 массива структур в один. допустим, есть вот такая вот структура struct...

Перегрузка оператора "=" - C++
Ввести строку символов S1. Программа должна содержать перегруженную операцию “=”, использование которой скопирует S1 в S2 при следующих...


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

Или воспользуйтесь поиском по форуму:
Sillent Div
0 / 0 / 1
Регистрация: 13.07.2013
Сообщений: 60
20.01.2014, 11:17  [ТС]     Перегрузка оператора "стрелка" #5
не работает, и как понять "хак" ?

Добавлено через 1 минуту
появляется ошибка type::uk is not accessible

Добавлено через 14 часов 0 минут
ха ха разобрался
Yandex
Объявления
20.01.2014, 11:17     Перегрузка оператора "стрелка"
Ответ Создать тему
Опции темы

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