| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Оператор для указателя |
| Автор: Neitron 16.12.2005, 12:23 |
| Можно ли как-нибудь определить оператор для указателя? Не помню в Страуструпе встречалось ли такое или нет. |
| Автор: A.V.N. 16.12.2005, 12:54 | ||||
|
| Автор: Neitron 16.12.2005, 13:12 | ||
| Нет я имел ввиду совсем другое. Это я знаю прекрасно. Ниже примерно то, что я спрашиваю.
|
| Автор: chaos 16.12.2005, 13:16 |
| можно |
| Автор: Neitron 16.12.2005, 13:28 | ||
| Тогда собсно, что в коде не правильно.... У меня билдер на строчку с определением ф-ции ругается...
|
| Автор: chaos 16.12.2005, 13:40 | ||
че там у тебя не правельно, разбираться не хочется
|
| Автор: _hunter 16.12.2005, 13:42 |
| тут A:: перед оператором не хватает, но мой билдер и такое не принимает... |
| Автор: Neitron 16.12.2005, 13:43 | ||||
| Не не не.... Эт я все знаю... Я же прошу об операторе для укзателя... В твоем случае это будет так
Добавлено @ 13:46
Тогда придется разыменовывать объект.... |
| Автор: _hunter 16.12.2005, 13:49 | ||
а в чем проблема? и почему так: int tmp = (int)a; написать нельзя? |
| Автор: Mayk 16.12.2005, 13:49 |
| А ты уверен что оно тебе надо? Для примера ф-ция CreateThread создает поток и передает ему dword. В win32 размер dword'а и указателя на объект обычно совпадают, поэтому можно делать типа CreateThread(threadMain, ..., (DWORD)(ptr)); А если ты попытаешься передать таким способом, то результат будет плачевным ... или ты [un]box'ингом и занимаешься? ЗЫ. Как вариант - сделай int A::operator&(); и используй ссылки, а не указатели. |
| Автор: Neitron 16.12.2005, 13:54 | ||
| Нееееееееееееее=))) Мне адрес совсем узнавать не нужно... Вы читайте же вопрос внимательно Вопрос, был ни как собсвенно узнать адрес, а можно ли вообще опеределить оператор для указателя. Примерно такое.... В моем случае вообще AnsiString нужин...
|
| Автор: chaos 16.12.2005, 14:08 | ||
| Neitron да вы извращенец батенька Добавлено @ 14:13 а че так тоже не подходит
|
| Автор: Neitron 16.12.2005, 14:15 | ||||
Видимо да)
Потому что я не спрашиваю как мне решить задачу, в программе которую я создаю. Мне не нужны альтернативные пути. Как решать свои задачи, я вполне нахожу способы. Я спрашиваю о тонкостях языка программирования, и о еще большей гибкости. И как уже понел, С++ это сделать слабо. Добавлено @ 14:19 В моем случае я вполне обхожусь сейчас так.
|
| Автор: chaos 16.12.2005, 14:40 | ||
а может такое тебя успокоит, и ты поверишь в С++
|
| Автор: Neitron 16.12.2005, 14:49 | ||
| ну не то, это все не то... И это намного длинее чем у меня сделано. Зачем это все и создовать дополнительные переменные? Когда можно вот так.
В С++ я верю, я это едисвенный язык который мне максимально нравится. |
| Автор: chaos 16.12.2005, 14:54 | ||
тогда "ни придется" ни чего разыменовывать |
| Автор: pablo 16.12.2005, 15:18 |
| Если я правельно понял вопросс что может было бы разумно перегрузить оператор "->", перегружается как и все остальные операторы. |
| Автор: Neitron 16.12.2005, 16:28 | ||
| pablo Зачем мне его перегружать?
Проблема не в том что я не хочу разыменовывать, а в том что я хочу, создать оператор для указателя. |
| Автор: pablo 16.12.2005, 17:41 |
| Насколько я знаю, в С++ запрещено создание своих операторов |
| Автор: Earnest 16.12.2005, 18:38 |
| Насколько я поняла, ты хочешь перегрузить оператор приведения типа для указателя на конкретный класс? Не выйдет. Указатель (на что угодно) является базовым типом. А написать свой оператор приведения можно только в классе. Только класс-обертка может помочь, вроде вышеприведеного MyString, но написать как ты хочешь все равно будет нельзя. Ты лучше подумай о другом: не за краткостью кода надо гнаться, а за ясностью. Если в коде сплошь и рядом указатели будут присваиваться интам, через полгода сам голову сломаешь, вспоминая, что ты хотел этим сказать. |
| Автор: Neitron 16.12.2005, 18:49 | ||
Я не хочу создать свой оператор. Earnest |