Летаем по приборам? :-)
Напиши, что надо, и скомпилируй. Если получится, то проблема редактора.
Вадим, в том то и дело, что всё компилируется. И методы работают. Но... писать то не удобно, когда методы не всплывают при написании. Идиотизм какой-то. Неужели такое не только у меня? Кидал эти 2 небольших класса (остальные которые огромные не переносил) в другой метаэдитор, и, там такая же хрень творится. Код компилится, методы рабочие, а писать не выходит нормально.
Возникает вопрос, как быть? Вроде бы же уже финальный релиз был. А толку?
Вадим, в том то и дело, что всё компилируется. И методы работают. Но... писать то не удобно, когда методы не всплывают при написании. Идиотизм какой-то. Неужели такое не только у меня? Кидал эти 2 небольших класса (остальные которые огромные не переносил) в другой метаэдитор, и, там такая же хрень творится. Код компилится, методы рабочие, а писать не выходит нормально.
Возникает вопрос, как быть? Вроде бы же уже финальный релиз был. А толку?
При компиляции вылазят ошибки
'ib_PrintUP' - undeclared identifier Logging.mqh 43 16
'ib_CommentUP' - undeclared identifier Logging.mqh 44 18
2 error(s), 0 warning(s)
При компиляции вылазят ошибки
'ib_PrintUP' - undeclared identifier Logging.mqh 43 16
'ib_CommentUP' - undeclared identifier Logging.mqh 44 18
2 error(s), 0 warning(s)
Ну так да. Это же включения, которые и не должны компилироваться. Но это не мешает пользоваться объектами одного класса другим.
Чтоб не было ошибок при компиляции прилагаю ещё один файл. Там разумеется все инклюды кроме 2 имеющихся нужно отключить. И всё будет компилироваться.
Доброго времени суток!
Не получается загрузить класс с параметрами в другом классе.
Вот к примеру есть класс:
class CGraphical
{
CGraphical (void) {param1=1; param2=2;}
CGraphical (int new1, int new2) {param1=new1; param2=new2;}
~CGraphical(void) {}
};
Как мне теперь загрузить класс выше с заданными параметрами в следующем классе:
class CTest
{
public:
CGraphical Graf; // ??? как правильно передать параметры
// Конструкторы
CTest () {} // ??? Или тут надо?
};
Большая просьба помочь, кто может. Заранее спасибо!
Ruslan Piraliyev #:
Спасибо огромное, получилось, хотя до этого список не работал, что то наверное не учел.
Подскажите еще - это единственный способ загрузить параметры?
Еще можно создать специальный публичный метод класса:
class CGraphical { int param1, param2; public: // Конструкторы CGraphical (void) {param1=1; param2=2;} CGraphical (int new1, int new2) {param1=new1; param2=new2;} ~CGraphical(void) {} void Init(int new1, int new2) { param1 = new1; param2 = new2; } };
Тут я перенес param1 и param2 в приватную секцию. А то они были общедоступны и их значения можно было изменять напрямую извне.
Также часто практикуется (я бы даже сказал: рекомендуется) создавать экземпляр класса в процессе выполнения кода:
class CTest { CGraphical *pGraf; public: CTest (); ~CTest(); }; CTest::CTest() { pGraf = new CGraphical(3, 4); if (CheckPointer(pGraf) == POINTER_INVALID) Alert("Instance creating error"); } CTest::~CTest() { if (CheckPointer(pGraf) != POINTER_INVALID) delete pGraf; }
Еще можно создать специальный публичный метод класса:
Тут я перенес param1 и param2 в приватную секцию. А то они были общедоступны и их значения можно было изменять напрямую извне.
Также часто практикуется (я бы даже сказал: рекомендуется) создавать экземпляр класса в процессе выполнения кода:
Очень интересно, благодарю!
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Назвать ветку так и не придумал как лучше. Думаю уже несколько дней, но решения так и не нашёл.
По сути, написал перечень классов. Всё по тиху тестирую. Никаких сложностей при написании не было. Но за последние несколько дней что-то случилось, и всё пошло как-то не так. Я пытался найти ошибку, но так и не смогу. Пришёл к выводу, что нужно постараться откинуть все классы, которые используют другие классы и оставить самые базовые. Проверить как они работают, и тд и тп. По тиху добавлять к ним другие, и так далее.
Так вот. Взял я самые простые и очень не большие классы, которые и решил проверить. Из HandlingWithErrors вызываю объект класса Logging. Но почему-то после имени объекта класса Logging и двоеточия появляется перечень методов класса HandlingWithErrors, а не перечень методов класса Logging, как нужно. Как такое может быть? Исходняки прилагаю..
В чём причина. Кривость языка или моя ошибка?