Возможно ли реализовать паттерн singleton на MQL4. - страница 8

 
ALXIMIKS:

Про инкапсуляцию забыл. И удалить можно. А здесь константных указателей нет ) Да и вообще синглтон не лучший паттерн.

А шаблоны хорошо хоть какие-то есть. Для классов наверное только мечтать.


 
Scriptong:
Мы вели речь о статических членах класса. Кроме того, в моем примере m_a - приватный член. А такие члены класса доступны только из экземпляров класса. Таким образом, нигде в коде, кроме как в экземплярах класса, значение переменной не может быть изменено. Это вопрос написания безопасного кода, что на корню отсеивает множество возможных в будущем багов. 


ну, я public поставил думая о другом, убрав его что изменится относительно статика - изнутри класса - ничего ?!

тем не менее Отсутствие возможности объявлять статически члены класса привело бы к необходимости объявлять эти данные на глобальном уровне программы.

тема осталась не раскрытой.. 

 
sergeev:

это пропиарили крутость mql

не заморачивайся над формулировкой

 По ходу вообще читая "доблесную документацияю" не стоит заморачиватся. Ибо там всё как-то не так. А потом вылазит какой-нить "умник", как несколькими постами выше и начинает обсуждать. А ситуация такая, что я внимательный очень. Если читаю, что речь идёт о конкретном типе данных, то так и воспринимаю. Если это недоработка, то надо было бы признать.
 
ALXIMIKS:

Кто то кричал про singleton 

 А планируется шаблоны расширять на классы и явное задание параметров? А то ругается и говорит, что много очень хочу.

П.С, Правильнее class SomeClass объявить внутри Singleton (тогда точно только один экземпляр SomeClass  можно будет создать), но так как-то нагляднее, хоть и не верно

 


Всё это я и так видел. Мне интересно было как это применить конкретно к моей структуре. А не просто увидеть копипаст с какого-то источника. Это я тоже умею)

А вообще, я понял, по совету Игоря, что мне видимо это не пригодится. Так что про данный паттерн я больше не говорю. А касаемо подгулявшей документации, которая отличается от С++ - овой, это явно так. Но, опять же, тут ничего не поделаешь.

Пока что придётся писать хоть так как возможно. Пока не появилась альтернатива.

 

Уважаемый что в этом посту было не верно???

ALXIMIKS 03.09.2014 15:34 #
hoz:

 Если переменные класса или структуры не теряют свои значения в процессе выполнения программы, то зачем тут они объявлены как static ?

 Они в секции паблик, можно сказать, что как в структуре... 


Вы или тугодум, или тугодум, извините за прямоту, черным по белому написано:

Например, у нас есть класс CParser, предназначенный для синтаксического разбора текстов, и нам необходимо считать общее количество обработанных слов и символовДостаточно объявить нужные члены класса статическими и инициализировать их на глобальном уровне. Тогда все экземпляры класса при работе будут использовать общие счетчики слов и символов. 

 Где тут хоть раз вспоминалось об:

переменные класса или структуры теряют свои значения в процессе выполнения программы 

Тут сказано что сохраняя принципы ООП и не создавая глобальных переменных мы можем подсчитать количество каких-то там слов с помощью статического члена класса,

он  (статический члена класса) создается в едином экземпляре и не зависит от количества созданных объектов данного класса.

 

Каким боком непонятные наезды касательно структуры и класса, а так же тех проблем которые вы на ровном месте выдумали сами,

касаются того что вы не понимаете основ ООП и storage duration, как сборного понятия о свойствах переменных вцелом??? 

 
ALXIMIKS:

Уважаемый что в этом посту было не верно???

 

Если ты не умеешь читать, то это твои проблемы. Вот цитата того, что я спрашивал. Если я где-то опечатался или написал по спешке не то, так это потому, что такие вот "умники" как ты тут болтают абы что. Если читать научился то вот постоянная ссылка на пост специально для особо непонятливых https://www.mql5.com/ru/forum/152923/page6#987432

 
Что в посту было не верно ?????????????? Да я не умею читать, ответьте на вопрос раз вы могёте читать)
 
struct A{
   static struct B{
      int x;
      int y;
   }Single;
};


void OnStart()
{
        A::Single.x = 5;
        Alert(A::Single.x);
}
 

вы за 2 дня страдания не разобрали что static ведет себя по разному в stuct и в class???

 по ходу, структуры взяли с С и только немного прокачали в плане наследования,

что качается классов, то они полноценные.

 Из-за этого в структурах не обязательно резервировать место под статик переменную

struct A{
   static  int x;
};

 а в классах резервировать место надо иначе ни как:

class B{
public:
   static  int x;
};
int B::x = 0;