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
|
Всё понял, списибо. |
|