C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Приведение типа, Приведение типа
Vitaly
  Отправлено: 14.09.2005, 17:01


Ученик-кочегар

Группа: Участник
Сообщений: 8



Я пишу некоторый класс. Если нужно от существующего типа привести к моему, то это делается с помощью
CODE

operator=(<тип_данных> <переменная_данного_типа>)
{
...
}


А можно ли каким либо образом привести от моего класса к существующему?
CODE

переменная1=(<тип>)переменная2
vvoid
Отправлено: 14.09.2005, 19:59


Машинист паровоза

Группа: Участник
Сообщений: 171



На сколько я понял ты хочешь объект одного класса затайпкастить к другому классу.
Я думаю не получится, компилер не разгребёт. Он же не будет лазить по твоим классам и смотреть а можно ли безболезненно преобразовывать типы объктов какого-либо класса. Разве что между этими классами есть родственная связь, да и то при преобразовании в сторону наследника. (Правда в таком случае никакое преобразование типов и не нужно)
BreakPointMAN
Отправлено: 14.09.2005, 22:15


Станционный диспетчер

Группа: Участник
Сообщений: 86



Можно определить функции-операции, которые будут осуществлять преобразование объекта класса к другому типу. Синтаксис такой:

operator имя_нового_типа ();

Тип возвращаемого значения и параметры указывать не требуется.
Пример.
Допустим, есть у нас некий класс A, который в некоторых случаях должен восприниматься как целое число. Пишем примерно следующее:
CODE

A::operator int(){return value;}

в ентом коде value — это переменная целочисленного типа, которая будет использована как "целочисленное значение класса", т.е. в случаях, когда в выражении ожидается int, а используется на этом месте объект класса A, реально будет использована переменная value, принадлежащая классу...

Отредактировано BreakPointMAN — 14/09/2005, 22:19
Vitaly
Отправлено: 17.09.2005, 16:47


Ученик-кочегар

Группа: Участник
Сообщений: 8



Всё понял, списибо.

Вернуться в Вопросы программирования в C++Builder