... это из разряда фантастики? Если нет, как его сделать?
конструкция Object * const ptr = ... не проканывает. Это же важная часть инкапсуляции!
А подскажите чайнику - в чем тайный смысл использования константных указателей, и как это относится к инкапсуляции?
Накидал пример:
class CType { public: int value; }; void OnStart() { CType* a; a=new CType; a.value = 10; const CType* b = GetPointer(a); Print("b=", b.value); //b=a; // ошибка, изменить указатель нельзя //b.value=30; // ошибка, данные изменить тоже нельзя.. CType* c; c=new CType; c = GetPointer(b); c.value=70; // а вот так данные изменить можно Print("b=", b.value); delete a; delete c; };
А подскажите чайнику - в чем тайный смысл использования константных указателей, и как это относится к инкапсуляции?
Вот пример:
class Manager { public: void Action() {} Manager* const Get() { return GetPointer(this); } }; Manager* GetManager() { static Manager theManager; return theManager.Get(); } void OnTick() { GetManager().Action(); }
Если бы был чистый константный указатель, пример бы работал.
А т.к. константность совмещенная, нельзя безопасно передать указатель на неконстантный объект.
... это из разряда фантастики? Если нет, как его сделать?
конструкция Object * const ptr = ... не проканывает. Это же важная часть инкапсуляции!
Мож так будет лучше?
const Object* ptr =...
Мож так будет лучше?
const Object* ptr =...
А почитать? Мне не нужен указатель на константу, мне нужен константный указатель на неконстанту.
Вот пример:
Если бы был чистый константный указатель, пример бы работал.
А т.к. константность совмещенная, нельзя безопасно передать указатель на неконстантный объект.
А какие проблемы безопасности решил бы константный указатель в приведенном вами примере?
MQL5 является всего лишь C++-подобным языком, и видимо в таких конструкциях разработчики не увидели большого смысла. Возможно, есть способ решить вашу задачу другим способом, нежели использованием таких ухищрений.
Тема снимается. Был неправ, извините.
Замена константного указателя -- использование POINTER_AUTOMATIC.
- www.mql5.com
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
... это из разряда фантастики? Если нет, как его сделать?
конструкция Object * const ptr = ... не проканывает. Это же важная часть инкапсуляции!