Непонятно, что означет поставленный т.о. знак "*".
Согласно справке "существует возможность динамически создавать объекты сложного типа. Это делается при помощи оператора new." Здесь же не используется оператор new. Поясните пожалуйста более подробно как и в каких случаях можно использовать знак "*".
kogriv: А далее, в фигурных скобках- возвращается сам объект next? Я правильно понимаю?
В фигурных скобках дано тело функции,
{return(next);}
это означает, что функция вернет переменную next, которая имеет тип указатель на объект класса CListItem. Что в общем-то и согласуется с типом функции.
Сразу после первого примера в статье идёт фраза "Переменная pstatus является указателем объекта, но сам объект мы преднамеренно "забыли" создать оператором new, и передали его в качестве параметра в функцию PrintStatus()".
//+------------------------------------------------------------------+//| добавление элемента в список |//+------------------------------------------------------------------+
CList::addItem(CListItem *item)
{
//--- сначала проверим корректность переданного указателяif(CheckPointer(item)==POINTER_INVALID) return;
//--- увеличим счетчик элементов в списке
m_counter++;
//--- если элементов в списке еще нетif(CheckPointer(first)!=POINTER_DYNAMIC)
{
first=item;
}
else
{
//--- установим для item указатель предыдущего объекта ----------------------- Начало ошибки-----------------------
item.prev(first);
//--- запомним указатель текущего первого элемента
CListItem *p=first;
//--- поставим на место первого элемента входящий item
first=item;
//--- установим для первого элемента списка указатель следующего объекта
first.next(p);
}
}
Выходит что у нового элемента списка prev и first ссылаются на второй элемент, а второй элемент не получает ссылки на первый элемент.
Сразу после первого примера в статье идёт фраза "Переменная pstatus является указателем объекта, но сам объект мы преднамеренно "забыли" создать оператором new, и передали его в качестве параметра в функцию PrintStatus()".
Лучше поздно, чем никогда. Спасибо, исправлено в статье. Убрано окончание предложения
Сразу после первого примера в статье идёт фраза "Переменная pstatus является указателем объекта, но сам объект мы преднамеренно "забыли" создать оператором new, и передали его в качестве параметра в функцию PrintStatus()".
Я так и не понял про указатели и ссылки в MQL5 и теперь уже в MQL4. В чем разница передачи по ссылке и указателю кроме лишнего кода? В С++ разница есть, а тут в чем? Если не сложно напишите более развернуто.
Добрый день. Я начинающий. У меня вопрос касаемо использования значка "*" (звездочка).
в файле samplelist:
"*" используется для объявления указателя на объект- это, вроде понятно.
Далее же:
Непонятно, что означет поставленный т.о. знак "*".
Согласно справке "существует возможность динамически создавать объекты сложного типа. Это делается при помощи оператора new." Здесь же не используется оператор new. Поясните пожалуйста более подробно как и в каких случаях можно использовать знак "*".
Далее же:
Непонятно, что означет поставленный т.о. знак "*".
Можете написать так
Разницы не будет, это касается только стиля оформления и небольшого идеологического подхода.
Можете написать так
Разницы не будет, это касается только стиля оформления и небольшого идеологического подхода.
Т.е.
CListItem *next(){return(next);}это объявление указателя на объект (или на метод?) next()? А далее, в фигурных скобках- возвращается сам объект next? Я правильно понимаю?
Понимаю, что все должно быть очень просто, но т.к. с ООП ранее не сталкивался, то вот и блужу в 3-х соснах. Вразумите, пожалуйста.
Т.е.
это объявление указателя на объект (или на метод?) next()?
А далее, в фигурных скобках- возвращается сам объект next? Я правильно понимаю?
В фигурных скобках дано тело функции,
{return(next);}это означает, что функция вернет переменную next, которая имеет тип указатель на объект класса CListItem. Что в общем-то и согласуется с типом функции.
Сразу после первого примера в статье идёт фраза "Переменная pstatus является указателем объекта, но сам объект мы преднамеренно "забыли" создать оператором new, и передали его в качестве параметра в функцию PrintStatus()".
1. Непонятно, "кого именно" передали - указатель, объект?
2. В примере нет функции PrintStatus().
По-моему ошибка:
Выходит что у нового элемента списка prev и first ссылаются на второй элемент, а второй элемент не получает ссылки на первый элемент.Сразу после первого примера в статье идёт фраза "Переменная pstatus является указателем объекта, но сам объект мы преднамеренно "забыли" создать оператором new, и передали его в качестве параметра в функцию PrintStatus()".
1. Непонятно, "кого именно" передали - указатель, объект?
2. В примере нет функции PrintStatus().
Лучше поздно, чем никогда. Спасибо, исправлено в статье. Убрано окончание предложения
Сразу после первого примера в статье идёт фраза "Переменная pstatus является указателем объекта, но сам объект мы преднамеренно "забыли" создать оператором new, и передали его в качестве параметра в функцию PrintStatus()".
По-моему ошибка:
Выходит что у нового элемента списка prev и first ссылаются на второй элемент, а второй элемент не получает ссылки на первый элемент.Да, там опечатка. Вместо
должно быть
исправлено.Я так и не понял про указатели и ссылки в MQL5 и теперь уже в MQL4. В чем разница передачи по ссылке и указателю кроме лишнего кода? В С++ разница есть, а тут в чем? Если не сложно напишите более развернуто.