Разбираюсь детально с ООП и никак не могу вьехать в этот код
Прочитал несколько статей в том чиле и эту https://www.mql5.com/ru/articles/179
и ника не могу понять, что делает этот код ?
Может кто то простым языком и примером показать зачем этот CObject и как он работает ?
Это класс-предок (база для потомков при наследовании), Prev() и Next() - для работы со списками, Save() и Load() - для файлов (нужно будет реализовать в классах-потомках, как и другие виртуальные методы). Не заморачивайтесь на нем, разбирайте нужные классы-потомки и все.
Я хочу понять как он работает и для чего он нужен.
Я хочу понять как он работает и для чего он нужен.
Я хочу понять как он работает и для чего он нужен.
А что именно непонятно?
class CObject { protected: CObject *m_prev; //Сохранили ссылку на память подобного класса в эту переменную CObject *m_next; public: CObject(); CObject *Prev() { return(m_prev); } //Вызвали сохраненую ссылку на память void Prev(CObject *node) { m_prev=node; } CObject *Next() { return(m_next); } void Next(CObject *node) { m_next=node; } virtual bool Save(int file_handle) { return(true); } virtual bool Load(int file_handle) { return(true); } virtual int Type() const { return(0); } protected: virtual int Compare(const CObject *node,int mode=0) const { return(0); } }; //+------------------------------------------------------------------+ void CObject::CObject() { m_prev=NULL; m_next=NULL; }
А что именно непонятно?
зачем в себе делать копии себя ?
CObject *m_prev; CObject *m_next;
зачем в себе делать копии себя ?
Это не копии это место под ссылку, оно изначально пустое
Ну много для чего может понадобиться
Проще понять на примере графических обьектов
Это самое оно для ООП
Это не копии это место под ссылку, оно изначально пустое
под какую ссылку ? На что ссылается ?
Это не копии это место под ссылку, оно изначально пустое
почему две и как их потом листать ?
почему две и как их потом листать ?
.... я тут стока напечатал а потом обновил случайно
сейчас приведу пример
class CObject { protected: CObject *m_prev; //Сохранили ссылку на память подобного класса в эту переменную CObject *m_next; public: CObject(); int primer; CObject *Prev() { return(m_prev); } //Вызвали сохраненую ссылку на память void Prev(CObject *node) { m_prev=node; } CObject *Next() { return(m_next); } void Next(CObject *node) { m_next=node; } virtual bool Save(int file_handle) { return(true); } virtual bool Load(int file_handle) { return(true); } virtual int Type() const { return(0); } protected: virtual int Compare(const CObject *node,int mode=0) const { return(0); } }; //+------------------------------------------------------------------+ void CObject::CObject() { primer=0; m_prev=NULL; m_next=NULL; }Vladimir Pastushak:
почему две и как их потом листать ?
void Init() { CObject Mars,Planeta; Mars.Prev(GetPointer(Planeta)); // Теперь в классе Марс есть клас Планета если он будет не протект то мы могли бы на него ссылаться прям с этой же функции CObject *Planeta2=Mars.Prev(); // А тут извлекли планету в планета2, вся суть в том что изменяя планету 2 мы одновремено меняем и планету т.к. по факту ссылаемся на один и тот же участок памяти }
Это будет очень заметно если в этот класс добавить
class CObject { protected: CObject *m_prev; //Сохранили ссылку на память подобного класса в эту переменную CObject *m_next; public: CObject(); int primer; CObject *Prev() { return(m_prev); } //Вызвали сохраненую ссылку на память void Prev(CObject *node) { m_prev=node; } CObject *Next() { return(m_next); } void Next(CObject *node) { m_next=node; } virtual bool Save(int file_handle) { return(true); } virtual bool Load(int file_handle) { return(true); } virtual int Type() const { return(0); } protected: virtual int Compare(const CObject *node,int mode=0) const { return(0); } }; //+------------------------------------------------------------------+ void CObject::CObject() { primer=0; m_prev=NULL; m_next=NULL; }
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Разбираюсь детально с ООП и никак не могу вьехать в этот код
Прочитал несколько статей в том чиле и эту https://www.mql5.com/ru/articles/179
и ника не могу понять, что делает этот код ?
Может кто то простым языком и примером показать зачем этот CObject и как он работает ?