Возникла проблема при написании потомка базового класса, компилятор пишет - " 'ХХХХХ' - wrong parameters count"
долго искал причину, перечитывал статейки и справочник,
нашел - в базовом классе конструктор, он один и параметрический.
Выход тоже нашел, перегрузка функции конструктора конструктором по умолчанию,
но тогда приходится все параметры параметрического конструктора базового класса перетаскивать в конструктор потомка для верности логики.
Есть ли иные пути?
как-то сразу при объявлении класса потомка можно распределить кому что? Например: эти параметры на конструктор базового класса, а эти чтобы потомок не скучал...
Если базовый класс имеет единственный параметрический конструктор, то в потомке избежать его вызова нельзя. Однако класс-потомок может иметь любое количество параметров, в том числе быть без параметров вообще. Главное, что бы конструктор базовового класса вызывался со всеми положенными ему параметрами. Пример:
class CParent
{
public:
CParent(int myID, string myName, double myValue)
{
id = myID;
name = myName;
value = myValue;
}
private:
int id;
string name;
doublevalue;
};
class CChildOne : CParent
{
public:
CChildOne() : CParent(2, "CChildOne", 2.34){;}
};
class CChildTwo : CParent
{
public:
CChildOne(int myID, int param) : CParent(myID, "CHildTwo", 2.56)
{
xParam = param;
}private:
double xParam;
};
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Здравствуйте! Как найти значение в двумерном массиве? Искать нужно в первом измерении. Стандартных средств по всей видимости нет. Спасибо!
Здравствуйте! Как найти значение в двумерном массиве? Искать нужно в первом измерении. Стандартных средств по всей видимости нет. Спасибо!
Начал изучать ООП.
Возникла проблема при написании потомка базового класса, компилятор пишет - " 'ХХХХХ' - wrong parameters count"
долго искал причину, перечитывал статейки и справочник,
нашел - в базовом классе конструктор, он один и параметрический.
Выход тоже нашел, перегрузка функции конструктора конструктором по умолчанию,
но тогда приходится все параметры параметрического конструктора базового класса перетаскивать в конструктор потомка для верности логики.
Есть ли иные пути?
как-то сразу при объявлении класса потомка можно распределить кому что? Например: эти параметры на конструктор базового класса, а эти чтобы потомок не скучал...
Если базовый класс имеет единственный параметрический конструктор, то в потомке избежать его вызова нельзя. Однако класс-потомок может иметь любое количество параметров, в том числе быть без параметров вообще. Главное, что бы конструктор базовового класса вызывался со всеми положенными ему параметрами. Пример:
тут в теме обсуждали
ENUM_POSITION_TYPE
два значения. а что возвращается, если нет открытых позиций?
я использую метод PositionType() из стандартной библиотеки.
Всё, понял PositionSelect() возвращает false, а PositionType() возвращает тип последней выбранной позиции.
получается что если позиций не открыто то всегда возвращается 0, то есть как будто открыта позиция на покупку?
как это правильно обойти?
тут в теме обсуждали
ENUM_POSITION_TYPE
два значения. а что возвращается, если нет открытых позиций?
я использую метод PositionType() из стандартной библиотеки.
Всё, понял PositionSelect() возвращает false, а PositionType() возвращает тип последней выбранной позиции.
получается что если позиций не открыто то всегда возвращается 0, то есть как будто открыта позиция на покупку?
как это правильно обойти?
Существует два варианта определения функции OnCalculate :
1) int OnCalculate (const int rates_total, // размер массива price[]
const int prev_calculated, // обработано баров на предыдущем вызове
const int begin, // откуда начинаются значимые данные
const double& price[] // массив для расчета
);
2) int OnCalculate (const int rates_total, // размер входных таймсерий
const int prev_calculated, // обработано баров на предыдущем вызове
const datetime& time[], // Time
const double& open[], // Open
const double& high[], // High
const double& low[], // Low
const double& close[], // Close
const long& tick_volume[], // Tick Volume
const long& volume[], // Real Volume
const int& spread[] // Spread
);
вызов функции 1) OnCalculate(), предварительно заполнив все ее параметры - OnCalculate(rates_total,0,0,_price);
ВОПРОС: подскажите, пожалуйста, как заполнить параметры, в таком случае, для второго варианта вызова функции OnCalculate()?
Существует два варианта определения функции OnCalculate :
1) int OnCalculate (const int rates_total, // размер массива price[]
const int prev_calculated, // обработано баров на предыдущем вызове
const int begin, // откуда начинаются значимые данные
const double& price[] // массив для расчета
);
2) int OnCalculate (const int rates_total, // размер входных таймсерий
const int prev_calculated, // обработано баров на предыдущем вызове
const datetime& time[], // Time
const double& open[], // Open
const double& high[], // High
const double& low[], // Low
const double& close[], // Close
const long& tick_volume[], // Tick Volume
const long& volume[], // Real Volume
const int& spread[] // Spread
);
вызов функции 1) OnCalculate(), предварительно заполнив все ее параметры - OnCalculate(rates_total,0,0,_price);
ВОПРОС: подскажите, пожалуйста, как заполнить параметры, в таком случае, для второго варианта вызова функции OnCalculate()?
а ничего не надо заполнять ни в первом, ни во втором случае.
Мне нужно вызвать эту функцию принудительно - как заполнить параметры в таком случае ?
Создать свою, эту нельзя.