|
|
|
Перегрузка оператора.
|
|||
|---|---|---|---|
|
#18+
Мне нужно перегрузить оператор умножения. В чем проблема. Прошу заранее извинения если вопрос глупый, я в С++ новичек. Код: plaintext 1. 2. 3. error C2804: binary 'operator *' has too many parameters ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2006, 11:06 |
|
||
|
Перегрузка оператора.
|
|||
|---|---|---|---|
|
#18+
EvgeshkaМне нужно перегрузить оператор умноженияЭто функция-член или friend ? Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2006, 11:14 |
|
||
|
Перегрузка оператора.
|
|||
|---|---|---|---|
|
#18+
У Бьерна Страуструпа это хорошо расписано. http://lib.ru/CPPHB/cpptut.txt ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2006, 11:19 |
|
||
|
Перегрузка оператора.
|
|||
|---|---|---|---|
|
#18+
Карабас Барабас EvgeshkaМне нужно перегрузить оператор умноженияЭто функция-член или friend ? Posted via ActualForum NNTP Server 1.3 На данный момент времени она объявлена как функция - член наверное. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2006, 11:37 |
|
||
|
Перегрузка оператора.
|
|||
|---|---|---|---|
|
#18+
EvgeshkaНа данный момент времени она объявлена как функция - членТогда первым операндом будет this Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2006, 11:39 |
|
||
|
Перегрузка оператора.
|
|||
|---|---|---|---|
|
#18+
Перегружать * нужно с одним параметром, второй передаётся неявно через this - указатель на объект класса, использующий данную операцию... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2006, 11:39 |
|
||
|
Перегрузка оператора.
|
|||
|---|---|---|---|
|
#18+
Dmitrii K.второй передаётся неявно через thisПо-моему, не второй, а первый Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2006, 11:46 |
|
||
|
Перегрузка оператора.
|
|||
|---|---|---|---|
|
#18+
Карабас Барабас Dmitrii K.второй передаётся неявно через thisПо-моему, не второй, а первый Posted via ActualForum NNTP Server 1.3 Я количество имел ввиду, а не порядок... да и какая, в принципе, разница... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2006, 11:50 |
|
||
|
Перегрузка оператора.
|
|||
|---|---|---|---|
|
#18+
Dmitrii K.Я количество имел ввидуНу тогда совсем другое дело ! тем более, что ссылка на доку уже была дана Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2006, 12:11 |
|
||
|
Перегрузка оператора.
|
|||
|---|---|---|---|
|
#18+
Спасибо братцы, у меня все получилось. Тут другая проблема вылезла, не могу теперь перегрузить оператор +: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. error C2679: binary '+' : no operator found which takes a right-hand operand of type 'Vector' (or there is no acceptable conversion) В принципе я понимаю что ему не нравится, но например просто оператор присваивания без сложения тут прекрасно работатет. Чего я тут набокопорил? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2006, 13:54 |
|
||
|
Перегрузка оператора.
|
|||
|---|---|---|---|
|
#18+
А оператор Vertor+Vector где ? Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2006, 14:08 |
|
||
|
Перегрузка оператора.
|
|||
|---|---|---|---|
|
#18+
Неплохо бы в операторах +, * и подобных проверять хотя бы совпадение длин векторов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2006, 08:30 |
|
||
|
Перегрузка оператора.
|
|||
|---|---|---|---|
|
#18+
Проблему решил так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Только у меня вопрос по поводу переменной Result, ее сборщик мусора очистит после выполнения оператора + или нет? Мне непонятно где ставить delete[] Result. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2006, 09:04 |
|
||
|
Перегрузка оператора.
|
|||
|---|---|---|---|
|
#18+
Объясните мне дураку - разве оператор + должен указатель возвращать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2006, 10:07 |
|
||
|
Перегрузка оператора.
|
|||
|---|---|---|---|
|
#18+
--null--разве оператор + должен указатель возвращать? Не должен, но может... Используется это для того, чтобы можно было выстраивать "цепочки" из перегруженных операций... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2006, 10:16 |
|
||
|
Перегрузка оператора.
|
|||
|---|---|---|---|
|
#18+
EvgeshkaПроблему решил так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Только у меня вопрос по поводу переменной Result, ее сборщик мусора очистит после выполнения оператора + или нет? Мне непонятно где ставить delete[] Result. Никто ее не очистит, переменная будет потеряна при выходе из функции, а освобождать нужно будет память по указателю, который возвращается из функции, иначе будет memory leak. И освобождать нужно ЯВНО. Это плохая идея через некоторое время, когда проект пойдет дальше , ты долго будешь искать где же память протекает. 1. Если это функция член, этот указатель нужно обьявлять полем класса и освобождать память в деструкторе. 2. Каждый вызов оператора должен проверять была ли ранне выделена память. Иначе каждый вызов будет брать себе новую память а старая будет потеряна(memory leak), а деструктор освободит память выделенную только последним вызовом оператора. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2006, 10:19 |
|
||
|
Перегрузка оператора.
|
|||
|---|---|---|---|
|
#18+
Проблему решил так: 1. переменную обьявил как: Код: plaintext 1. 2. 3. 4. 2. delete также один раз в деструкторе класса. Так вроде все работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2006, 10:58 |
|
||
|
Перегрузка оператора.
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2006, 11:03 |
|
||
|
Перегрузка оператора.
|
|||
|---|---|---|---|
|
#18+
Если хочешь сделать это нормально, int* operator= (int* _Array) int* operator+ (int* _Array) должны возвращать: operator= - ссылку на объект ( Vector& ) operator+ - экземпляр объекта ( Vector ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2006, 11:08 |
|
||
|
Перегрузка оператора.
|
|||
|---|---|---|---|
|
#18+
MasterZivЕсли хочешь сделать это нормально, int* operator= (int* _Array) int* operator+ (int* _Array) должны возвращать: operator= - ссылку на объект ( Vector& ) operator+ - экземпляр объекта ( Vector ) Спасибо, я на будущее я это учту. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2006, 12:23 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=33744591&tid=2031190]: |
0ms |
get settings: |
10ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
240ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
34ms |
get tp. blocked users: |
1ms |
| others: | 264ms |
| total: | 571ms |

| 0 / 0 |
