А для чего вы нарочно переназначили указатель, переданный в функцию ? Конечно будет утечка. Но это не "классическая утечка", а классическая ошибка работы с указателем на объект.
Здесь не нужно создавать новый объект, а работать нужно с внешним объектом, указатель на который передан в функцию.
Это не я. Из чужого кода с этой ветки взято. Для примера взято.
Модераторы, извините за повтор вопроса. Уж очень хочется получить на него ответ.
Если я правильно понял вопрос, то объявляем класс как объект с помощью new. Далее через созданный объект, с помощью точки, вызываем публичные методы класса. После выполнения всех вызванных методов, очищаем память, удалив созданный объект delete.
Если я правильно понял вопрос, то объявляем класс как объект с помощью new. Далее через созданный объект, с помощью точки, вызываем публичные методы класса. После выполнения всех вызванных методов, очищаем память, удалив созданный объект delete.
Не. Сначала подумал, что это параметр функции такой - объект но не по ссылке, но в конце точка с запятой. Если же это обычное создание объекта при объявлении, то с чего оно в скобках? Поэтому пока остается загадкой века.
Не. Сначала подумал, что это параметр функции такой - объект но не по ссылке, но в конце точка с запятой. Если же это обычное создание объекта при объявлении, то с чего оно в скобках? Поэтому пока остается загадкой века.
В скобках - потому, что это примечание по тексту))))
А для чего вы нарочно переназначили указатель, переданный в функцию ? Конечно будет утечка. Но это не "классическая утечка", а классическая ошибка работы с указателем на объект.
Здесь не нужно создавать новый объект, а работать нужно с внешним объектом, указатель на который передан в функцию.
да дело не в моем примере, а в реализации самих указателей в MQL - то их не нужно разименовывать (причем указатель можно присвоить и экземпляру обьекта!) , то можно вместо передачи указателя передать ссылку на обьект https://www.mql5.com/ru/forum/1111/page2471#comment_11796665
то вот вообще отсутствует толком инфа откуда и когда появился (CObj &obj) (причем & - это не операция разименования указателя, а получение указателя GetPointer() )
ладно, не хочу из пустого в порожнее... я уже себе сказал и в очередной раз на форуме повторю - MQL это не С++ и точка! так реализовано - ну вариантов нет
да дело не в моем примере, а в реализации самих указателей в MQL - то их не нужно разименовывать (причем указатель можно присвоить и экземпляру обьекта!) , то можно вместо передачи указателя передать ссылку на обьект https://www.mql5.com/ru/forum/1111/page2471#comment_11796665
то вот вообще отсутствует толком инфа откуда и когда появился (CObj &obj) (причем & - это не операция разименования указателя, а получение указателя GetPointer() )
ладно, не хочу из пустого в порожнее... я уже себе сказал и в очередной раз на форуме повторю - MQL это не С++ и точка! так реализовано - ну вариантов нет
Что-то вы драматизируете, нет здесь никаких сложностей и непонятностей.
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Да ладно! То-то постоянно использую.
Где? В каком месте и каким образом?
Модераторы, извините за повтор вопроса. Уж очень хочется получить на него ответ.
А для чего вы нарочно переназначили указатель, переданный в функцию ? Конечно будет утечка. Но это не "классическая утечка", а классическая ошибка работы с указателем на объект.
Здесь не нужно создавать новый объект, а работать нужно с внешним объектом, указатель на который передан в функцию.
Где? В каком месте и каким образом?
Модераторы, извините за повтор вопроса. Уж очень хочется получить на него ответ.
Где? В каком месте и каким образом?
Модераторы, извините за повтор вопроса. Уж очень хочется получить на него ответ.
Если я правильно понял вопрос, то объявляем класс как объект с помощью new.
Далее через созданный объект, с помощью точки, вызываем публичные методы класса.
После выполнения всех вызванных методов, очищаем память, удалив созданный объект delete.
Если я правильно понял вопрос, то объявляем класс как объект с помощью new.
Далее через созданный объект, с помощью точки, вызываем публичные методы класса.
После выполнения всех вызванных методов, очищаем память, удалив созданный объект delete.
Не. Сначала подумал, что это параметр функции такой - объект но не по ссылке, но в конце точка с запятой. Если же это обычное создание объекта при объявлении, то с чего оно в скобках? Поэтому пока остается загадкой века.
Не. Сначала подумал, что это параметр функции такой - объект но не по ссылке, но в конце точка с запятой. Если же это обычное создание объекта при объявлении, то с чего оно в скобках? Поэтому пока остается загадкой века.
А для чего вы нарочно переназначили указатель, переданный в функцию ? Конечно будет утечка. Но это не "классическая утечка", а классическая ошибка работы с указателем на объект.
Здесь не нужно создавать новый объект, а работать нужно с внешним объектом, указатель на который передан в функцию.
да дело не в моем примере, а в реализации самих указателей в MQL - то их не нужно разименовывать (причем указатель можно присвоить и экземпляру обьекта!) , то можно вместо передачи указателя передать ссылку на обьект https://www.mql5.com/ru/forum/1111/page2471#comment_11796665
то вот вообще отсутствует толком инфа откуда и когда появился (CObj & obj) (причем & - это не операция разименования указателя, а получение указателя GetPointer() )
ладно, не хочу из пустого в порожнее... я уже себе сказал и в очередной раз на форуме повторю - MQL это не С++ и точка! так реализовано - ну вариантов нет
да дело не в моем примере, а в реализации самих указателей в MQL - то их не нужно разименовывать (причем указатель можно присвоить и экземпляру обьекта!) , то можно вместо передачи указателя передать ссылку на обьект https://www.mql5.com/ru/forum/1111/page2471#comment_11796665
то вот вообще отсутствует толком инфа откуда и когда появился (CObj & obj) (причем & - это не операция разименования указателя, а получение указателя GetPointer() )
ладно, не хочу из пустого в порожнее... я уже себе сказал и в очередной раз на форуме повторю - MQL это не С++ и точка! так реализовано - ну вариантов нет
Что-то вы драматизируете, нет здесь никаких сложностей и непонятностей.
В скобках - потому, что это примечание по тексту))))
Ну и вот.
Вот так:
void z(CObj * o){ }даже не просто можно, а лучше, потому что можно вот так вызывать:
z(GetPointer(obj));Если передавать указатель по ссылке, нужна будет еще одна переменная для указателя.
***
А если в функцию надо передать указатель, чтобы в функции создать объект, вот так работает:
Вот собственно и все, что вы хотели знать про ООП, но боялись спросить)))