MQL4: Object = (Class *) NULL;

Я столкнулся с этим в программе, которую я пытаюсь улучшить.

class Class1
{
private:

public:
Class1();
~Class1();

protected:

Class2* Object2;
};
Imbalance::Imbalance()
{
Object2 = (Class2*)NULL;
}

Может кто-нибудь сказать мне, что означает *, когда вы создаете объект, и почему при создании экземпляра класса вы бы сделали объект = класс чем-то нулевым. Есть ли книга, которую я могу прочитать об этом? Или любой хороший документ или веб-страницу о классе и объектах на MQL4, C ++ …

0

Решение

* в C ++ означает, что это указатель на объект.

Инициализация указателя на NULL означает, что он указывает на никуда (кстати nullptr будет лучшей альтернативой в наше время).

Обычно, в какой-то момент в вашем коде вы найдете какое-то утверждение вроде:

if ( Object2 == NULL )       // if not pointing to an object
Object2 =  new Class2;  // create a new one

Большинство книг по C ++ подробно объясняют указатели.

Поэтому мой первый ответ будет «Язык программирования C ++» от B.Stroustrup.

Некоторые онлайн-уроки: Вот а также Вот.

Изменить: язык MQL4

В языке MQL4, который исторически основывался на C-подобных синтаксических конструкциях и недавних (после Build 509) расширениях, появилось еще несколько (заимствованных из домена MQL5), * также указатель на объект, и new создает объект динамически. Но в отличие от C ++, это не прямой указатель на место в памяти, а косвенный указатель, использующий концепцию дескриптор.

Предопределенная постоянная переменная NULL означает — как в C ++ — что нет значения. Его можно назначать переменным любых других фундаментальных типов без преобразования. Сравнение переменных фундаментального типа с NULL значение допускается.

В «New-MQL4» (пост Build 509) NULL также можно сравнить с указателями на объекты, созданные с new оператор.

(Спасибо пользователю3666197 за дополнительную информацию, специфичную для MQL4)

2

Другие решения


По вопросам рекламы [email protected]