Пардон, вероятно это был не я, или это было давно.
Спасибо.
Если у Вас создаются объекты одного и того же класса, то самым лучшим вариантом будет массив объектов этого класса. Не нужно заморачиваться с new и delete
Если у Вас создаются объекты одного и того же класса, то самым лучшим вариантом будет массив объектов этого класса. Не нужно заморачиваться с new и delete
Честно говоря, не получается создать даже не просто массив, а просто копию класса. я не силен в ооп, вероятно в этом проблема. будет здорово, если вы добавите в список статей к публикации что-нибудь типа "оператор 'new' и '*'"
Думаю, это будет не только мне полезно. Уверен, mql5 рулит!!!!
Честно говоря, не получается создать даже не просто массив, а просто копию класса. я не силен в ооп, вероятно в этом проблема. будет здорово, если вы добавите в список статей к публикации что-нибудь типа "оператор 'new' и '*'"
Думаю, это будет не только мне полезно. Уверен, mql5 рулит!!!!
Для понимания ООП, нужно в первую очередь понимать, что есть КЛАСС это просто описание ... хм, ну типа чертеж некой фигни. А сама фигня называется либо "экземпляр класса" либо "объект". Лучше для понимания использовать именно слова "экземпляр класса", так как объект как-то слишком уж абстрактно. Да и обычно для разных нужд создают такие КЛАССЫ с именем "объект".
Ну дак вот представьте себе что у вас есть чертеж ( объявление класса ) автомобиля, и когда вы хотите изготовить (создать неких объект - "экземпляр" этого вашего класса ) реальный автомобиль, то вы говорите NEW. То есть "хочу новый автомобиль по данному чертежу". А чтобы потом можно были ОПЕРИРОВАТЬ с созданным вами автомобилем вы должны где-то хранить "ссылку" ( ярлык если хотите) на этот ваш новый созданный автомобиль. Вот это и есть указатель, это и есть "*".
То есть ВЫ создаете чертеж
class MyAvto_Model_A12 { int a, int b; };
А когда создаете уже сам авто по тем чертежам пишите так
MyAvto_Model_A12 * pAvto;
Это Вы создали ярлык для хранения "экземпляра класса".
А теперь можно уже создать авто.
pAvto= new MyAvto_Model_A12
через NEW.
А пользоваться этим созданным авто нужно так -
pAvto->a;
Вот можно сказать, всё понятно!)) И про экземпляры, и про ту самую статью Рашида. Одного не могу добиться. Создать экземпляры класса. Вот хоть убей, не создаются и всё... Даже на стадии компиляции. Компилятор ругается или на звездочку или на new, и вообще, не пойму как создать массив ссылок на определенный класс (видимо, в моем случае, ссылки- это правильней)
Задача такая:
Есть тело программы
OnInit()
...тут мы получаем список инструменов. назовем его Syms[n]
тут же надо определиться с тем, присутствует инструмент или нет, это готово.
далее надо (мы ведь мультивалютные теперь) размножить один класс сигналов на все доступные Syms[n] инструменты! тут у меня трабл
OnTick (или по таймеру)
опрос трабла...
Не могу создать экземпляр класса! Не понимаю, как это сделать.Вот прикрепленного.
class CSignal { public: // ... void Print(); }; CSignal eurusd,gbpusd; CSignal symbols[10];
CSignal - это класс (или "чертеж"/описание, как сказал Academic),
eurusd и gbpusd - это переменные типа CSignal (т.е. объекты/экземпляры класса CSignal). Соответственно можно обращаться eurusd.Print(), gbpusd.Print()
symbols[10] - массив объектов. Значит можно обращаться symbols[3].Print().
pronych, на операторы new,* следует обратить внимание, когда начнете использовать виртуальные функции.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Все статьи, это конечно, прекрасно... Но, возможно я не нашел, или не понял как правильно использовать такие операторы как 'new' и '*'(звездочка, в данном контексте). Не пойму, как их использовать, а необходимость назрела. Такой пример:
Есть определенный класс, отвечающий за подачу сигнала по указанному инструменту. Надо его размножить на какое-то произвольное количество инструментов с различными настройками входных переменных. А если конкретно, примерно так:
есть класс CSignal с параметрами. Определен как Signal
int SigValue; string Sybm[n];
...вот тут (в цикле) надо создать определенное (n) количество копий класса CSignal для каждого инструмента в отдельности, со своими настройками. Как это правильно сделать?
for(...) {SigValue=Signal(Sybm[n])} //lдальше опрос, уже не важно
PS. Будьте добры, расскажите поподробней про операторы 'new' и особенно '*'. Как их правильно использовать, ума не приложу..