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

 
ALXIMIKS:

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

 А ещё можно писать "всё в одном" минуя классы и структуры. Даже на процедурном. Пишите как хотите, что вы от меня хотите?

Страуструпа ещё поучи попробуй. Напиши ему письмецо, что он много лишнего придумал. Каждый выбирает своё, и каждый пишет так как хочет. Мне удобно писать, когда всё разделено согласно выполнения определённых задач. Чтоб всё распределить и назвать это кусок работы. Но зато когда эти куски кода превращаются в " чёрный ящик " это очень удобно. Особенно, когда там не много лишнего как вы выразились:

ALXIMIKS:

4) возможно большая кучность данных, но вопрос к разработчикам. 

Кстати, разработчики тут не причём. Не тот момент.

А вот свой вопрос я жду. Интересно, почему такая разница, когда её нет согласно документации...

 
hoz:
А почему так для классов не делается согласно документации? Почему там выносится и инициализируется каждый член за класс?

снова зорово. :)

что вы таки хотите от нас?

 
_new-rena:
Читаю и надеюсь что скрин будет паттерна (?).... для коллекции надо...

извиняюсь, тут программирование "одиночки"... ушёл.
 

справка все же какая-то убогая, потому что я так и не понял фразы

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

кто понял, поясните что этим хотели сказать ? 

 
keekkenen:

кто понял, поясните что этим хотели сказать ? 

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

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

 
keekkenen:

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

кто понял, поясните что этим хотели сказать ? 


Вместо:

class CClass
{
   static int m_a;
};

 нужно было бы использовать только:

int g_a;

 Причем в первом случае m_a доступна только в экземплярах класса CClass, а во втором - из любой части программы.

 
Scriptong:


Вместо:

 нужно было бы использовать только:

 Причем в первом случае m_a доступна только в экземплярах класса CClass, а во втором - из любой части программы.


не вижу преимущества/отличия между 

class CClass
{
   static int m_a;
};

 перед

class CClass
{
   public:
    int m_a;
};

 

дело не в формулировке, а в том, что под ней подразумевается ?! 

 
keekkenen:

не вижу преимущества/отличия между

Первое аналог неймспейса.
 
keekkenen:


не вижу преимущества/отличия между 

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

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

class SomeClass{
public:
   int a;
};

class Singleton{
protected:
        static SomeClass* _self;
        Singleton(){}
        virtual ~Singleton(){}   
public:
        static SomeClass* Instance(){
                if(_self == NULL){
                        _self = new SomeClass();
                }
                return _self;
        } 
        static void DeleteInstance(){
                        delete _self;
        }
};
 
SomeClass* Singleton ::_self = NULL;

void OnStart()
{       
        SomeClass* some_ptr = Singleton::Instance();
        Alert(some_ptr.a);                              // Alert(Singleton::Instance().a); // або просто так
        Singleton::DeleteInstance();
}

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

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

Причина обращения: