1. Ничего страшного в двойном вызове этой функции нет.
2. А Вас не смущает, что те кто против использования статических функций не приводят ни малейших аргументов?
Лучше не смотрите видео от кого попало, а читайте книги.
автору видео https://youtu.be/lfdAwl3-X_c и https://youtu.be/zME4SOCHT0I пожелаю много чего хорошего..... выбили из колеи на всю неделю, все что не сяду делать начинаю думать, а не делать как раньше .... нельзя статики применять не ООП это!
хочу закончить код, не дает следующий вопрос мне покоя:
- хочу сделать сохранение полей обьектов, благо поля сразу были помещены в структуры и сохраниться можно в один клик через FileWriteStruct()
- обьектов одного класса N штук, все наследованы от одного базового класса
- из за просмотра видева была надежда, что некий способ позволит не опрашивать каждый обьект на предмет нужно ли ему произвести сохранение в файл.... в общем фейл, принято решение не заниматься глупостями и создать один метод который будет в статик переменную присваивать флаг необходимости записи в файл
по разному пробовал изменять тестовый скрипт, не вижу разницы, покажите кто - нибудь на этом скрипте ходя бы правильные модификаторы для поста выше: (protected / private ) и вызов M::x или просто х
//+------------------------------------------------------------------+interface I
{ bool main();
};
//+------------------------------------------------------------------+class M:public I
{
protected:
staticint x;
bool main() { x++; Print(__FUNCTION__," = ",x); return(x>0); }
public:
M() { Print(__FUNCTION__);}
~M() { Print(__FUNCTION__);}
};
//+------------------------------------------------------------------+staticint M::x=0;
//+------------------------------------------------------------------+class A:public M
{
public:
A() { Print(__FUNCTION__);}
~A() { Print(__FUNCTION__);} };
//+------------------------------------------------------------------+class B:public M
{
public:
B() { Print(__FUNCTION__);}
~B() { Print(__FUNCTION__);} };
//+------------------------------------------------------------------+class C:public M
{
public:
C() { Print(__FUNCTION__);}
~C() { Print(__FUNCTION__);} };
//+------------------------------------------------------------------+voidOnStart()
{ I *a = new A;
I *b = new B;
I *c = new C;
I *m = new M;
a.main();
b.main();
c.main();
m.main();
delete a;
delete b;
delete c;
delete m;
}
//+------------------------------------------------------------------+
по разному пробовал изменять тестовый скрипт, не вижу разницы, покажите кто - нибудь на этом скрипте ходя бы правильные модификаторы для поста выше: (protected / private ) и вызов M::x или просто х
Внутри методов класса вызываешь x, во всех остальных местах M::x, если protected, то обращение возможно только в методах класса, в котором определено поле, тут логика общая.
Vladimir Simakov: Внутри методов класса вызываешь x, во всех остальных местах M::x, если protected, то обращение возможно только в методах класса, в котором определено поле, тут логика общая.
ну да! спросонья пример не правильный составил, вот так:
class M
{
private:
staticint x;
bool main() { x++; Print(__FUNCTION__," = ",x); return(x>0); }
public:
M() { Print(__FUNCTION__);}
~M() { Print(__FUNCTION__);} };
//+------------------------------------------------------------------+staticint M::x=0;
//+------------------------------------------------------------------+class A:public M
{
public:
A() { Print(__FUNCTION__);}
~A() { Print(__FUNCTION__);}
void inc() {main();} };
//+------------------------------------------------------------------+class B:public M
{
public:
B() { Print(__FUNCTION__);}
~B() { Print(__FUNCTION__);}
void inc() {main();} };
//+------------------------------------------------------------------+class C:public M
{
public:
C() { Print(__FUNCTION__);}
~C() { Print(__FUNCTION__);}
void inc() {main();} };
//+------------------------------------------------------------------+voidOnStart()
{ A *a = new A;
B *b = new B;
C *c = new C;
M *m = new M;
a.inc();
delete a;
delete b;
delete c;
delete m;
}
//+------------------------------------------------------------------+
сразу получил 'M::main' - cannot access private member functiontst.mq52532
автору видео https://youtu.be/lfdAwl3-X_c и https://youtu.be/zME4SOCHT0I пожелаю много чего хорошего..... выбили из колеи на всю неделю, все что не сяду делать начинаю думать, а не делать как раньше .... нельзя статики применять не ООП это!
хочу закончить код, не дает следующий вопрос мне покоя:
- хочу сделать сохранение полей обьектов, благо поля сразу были помещены в структуры и сохраниться можно в один клик через FileWriteStruct()
- обьектов одного класса N штук, все наследованы от одного базового класса
- из за просмотра видева была надежда, что некий способ позволит не опрашивать каждый обьект на предмет нужно ли ему произвести сохранение в файл.... в общем фейл, принято решение не заниматься глупостями и создать один метод который будет в статик переменную присваивать флаг необходимости записи в файл
работает вроде как задумано
ну и сам вопрос, что будет если так записать:
что будет если так записать:
От чего зависит, нужно ли сохранить объект в файл?
От чего зависит, нужно ли сохранить объект в файл?
Этот признак общий для всех объектов?
ну вопрос конечно диалектический, тут
- или имею 10 стратегий и писать 10 файлов при изменении состояния ТС (1 ТС = 1 структура)
- или логичнее из класса где идет вызов ( перебор ) стратегий по тику передавать 1 хендл, чтобы они писали все в один файл
я 2-й вариант считаю логичным
получается, что при старте всех ТС нужно будет один раз записать 10 структур - состояние изменилось
затем в произвольном порядке нужно записать когда потребуется ( сработка СЛ илиТП ) - тут тоже быстрее открыть файл и записать одним махом 10 структур, стратегии не пипсовочные, запись не каждую секунду , от минуты до часа в каждой ТС
пока реализовал путем описания статик переменной доступ к ней через гет - сет , сет протектед, гет публичный - он же и сбрасывает в false статик переменную после вызова
- или имею 10 стратегий и писать 10 файлов при изменении состояния ТС (1 ТС = 1 структура)
- или логичнее из класса где идет вызов ( перебор ) стратегий по тику передавать 1 хендл, чтобы они писали все в один файл
я 2-й вариант считаю логичным
получается, что при старте всех ТС нужно будет один раз записать 10 структур - состояние изменилось
затем в произвольном порядке нужно записать когда потребуется ( сработка СЛ илиТП ) - тут тоже быстрее открыть файл и записать одним махом 10 структур, стратегии не пипсовочные, запись не каждую секунду , от минуты до часа в каждой ТС
пока реализовал путем описания статик переменной доступ к ней через гет - сет , сет протектед, гет публичный - он же и сбрасывает в false статик переменную после вызова
Это всё понятно. Непонятно почему SetSaveRequired() и GetSaveRequired() нестатические, но записывают в статическую переменную.
ну да, это более правильное решение! чтобы на один метод меньше было
1. Ничего страшного в двойном вызове этой функции нет.
2. А Вас не смущает, что те кто против использования статических функций не приводят ни малейших аргументов?
Лучше не смотрите видео от кого попало, а читайте книги.
автору видео https://youtu.be/lfdAwl3-X_c и https://youtu.be/zME4SOCHT0I пожелаю много чего хорошего..... выбили из колеи на всю неделю, все что не сяду делать начинаю думать, а не делать как раньше .... нельзя статики применять не ООП это!
хочу закончить код, не дает следующий вопрос мне покоя:
- хочу сделать сохранение полей обьектов, благо поля сразу были помещены в структуры и сохраниться можно в один клик через FileWriteStruct()
- обьектов одного класса N штук, все наследованы от одного базового класса
- из за просмотра видева была надежда, что некий способ позволит не опрашивать каждый обьект на предмет нужно ли ему произвести сохранение в файл.... в общем фейл, принято решение не заниматься глупостями и создать один метод который будет в статик переменную присваивать флаг необходимости записи в файл
работает вроде как задумано
ну и сам вопрос, что будет если так записать:
что будет если так записать:
по разному пробовал изменять тестовый скрипт, не вижу разницы, покажите кто - нибудь на этом скрипте ходя бы правильные модификаторы для поста выше: (protected / private ) и вызов M::x или просто х
по разному пробовал изменять тестовый скрипт, не вижу разницы, покажите кто - нибудь на этом скрипте ходя бы правильные модификаторы для поста выше: (protected / private ) и вызов M::x или просто х
Внутри методов класса вызываешь x, во всех остальных местах M::x, если protected, то обращение возможно только в методах класса, в котором определено поле, тут логика общая.
ну да! спросонья пример не правильный составил, вот так:
сразу получил 'M::main' - cannot access private member function tst.mq5 25 32
если запишу
то все работает как задумано!
С праздником, кстати. Очередной байт случился.
Спасибо, разобрался!
С праздником!
автору видео https://youtu.be/lfdAwl3-X_c и https://youtu.be/zME4SOCHT0I пожелаю много чего хорошего..... выбили из колеи на всю неделю, все что не сяду делать начинаю думать, а не делать как раньше .... нельзя статики применять не ООП это!
хочу закончить код, не дает следующий вопрос мне покоя:
- хочу сделать сохранение полей обьектов, благо поля сразу были помещены в структуры и сохраниться можно в один клик через FileWriteStruct()
- обьектов одного класса N штук, все наследованы от одного базового класса
- из за просмотра видева была надежда, что некий способ позволит не опрашивать каждый обьект на предмет нужно ли ему произвести сохранение в файл.... в общем фейл, принято решение не заниматься глупостями и создать один метод который будет в статик переменную присваивать флаг необходимости записи в файл
работает вроде как задумано
ну и сам вопрос, что будет если так записать:
что будет если так записать:
От чего зависит, нужно ли сохранить объект в файл?
Этот признак общий для всех объектов?
От чего зависит, нужно ли сохранить объект в файл?
Этот признак общий для всех объектов?
ну вопрос конечно диалектический, тут
- или имею 10 стратегий и писать 10 файлов при изменении состояния ТС (1 ТС = 1 структура)
- или логичнее из класса где идет вызов ( перебор ) стратегий по тику передавать 1 хендл, чтобы они писали все в один файл
я 2-й вариант считаю логичным
получается, что при старте всех ТС нужно будет один раз записать 10 структур - состояние изменилось
затем в произвольном порядке нужно записать когда потребуется ( сработка СЛ илиТП ) - тут тоже быстрее открыть файл и записать одним махом 10 структур, стратегии не пипсовочные, запись не каждую секунду , от минуты до часа в каждой ТС
пока реализовал путем описания статик переменной доступ к ней через гет - сет , сет протектед, гет публичный - он же и сбрасывает в false статик переменную после вызова
ну вопрос конечно диалектический, тут
- или имею 10 стратегий и писать 10 файлов при изменении состояния ТС (1 ТС = 1 структура)
- или логичнее из класса где идет вызов ( перебор ) стратегий по тику передавать 1 хендл, чтобы они писали все в один файл
я 2-й вариант считаю логичным
получается, что при старте всех ТС нужно будет один раз записать 10 структур - состояние изменилось
затем в произвольном порядке нужно записать когда потребуется ( сработка СЛ илиТП ) - тут тоже быстрее открыть файл и записать одним махом 10 структур, стратегии не пипсовочные, запись не каждую секунду , от минуты до часа в каждой ТС
пока реализовал путем описания статик переменной доступ к ней через гет - сет , сет протектед, гет публичный - он же и сбрасывает в false статик переменную после вызова
Это всё понятно. Непонятно почему SetSaveRequired() и GetSaveRequired() нестатические, но записывают в статическую переменную.