Объект одного класса включает в себя четыре объекта другого класса.
- Войдите на сайт для отправки комментариев
Вс, 22/03/2020 - 20:54
Пожалуйста, помогите начинающему программисту.
Создаю объект "панель оператора", нужно включить в него четыре кнопки, принадлежащие другому классу.
Хочу инициализировать четыре объекта кнопок (прописывать пины) в одной строчке.
Компилятор ругается.
Код:
class Button4 { // панель оператора
public:
boolean pressEsc = false; // true - если кнопка нажата
boolean pressDec = false;
boolean pressInc = false;
boolean pressEnter = false;
..................................................
..................................................
Button::Button (byte esc_pin,byte dec_pin,byte inc_pin,byte enter_pin,byte period) {
ButtonSerge button_Esc(esc_pin,period); // создаю объекты - кнопки
ButtonSerge button_Dec(dec_pin,period);
ButtonSerge button_Inc(inc_pin,period);
ButtonSerge button_Enter(enter_pin,period);
}
Если создавать кнопки не в конструкторе, то где?
Прочитать что компилятор пишет не пробовал?
Я уже сто вариантов перепробовал, все сто ответов, наверное, неинтересно будет.
Есть скетч рабочей программы, но она просто скетч, не на основе класса.
Я должен всё это в класс "завернуть", для библиотеки. И так и сяк уже, хрен с два.
Нет, ты попробуй все-таки прочитать, а не "варианты".
Я создаю объекты
ButtonSerge button_Esc(esc_pin,period); // создаём объекты "кнопки"
в описании конструктора класса Button4
При вызове конструктора
Button4 but4(12,11,10,9,20); // создаём объект из четырёх кнопок ESC,DEC,INC,ENTER компилятор сообщает, что эти объекты (кнопки) не описаны.
Я их описал не в том месте и не так.
Я возвращаюсь к своему первому вопросу:
Где и как я должен заявлять объекты "кнопки"?
valeryich,
для начала, вставьте код правильно.
Пока Вы этого не сделаете его никто читать не будет!
Вставьте, объясните толком проблему, тогда и поговорим.
Валерич. сколько можно постить код не по правилам? думаешь кто-то будет в этих "слепых" строчках разбираться?
Модераторы, прошу зачистить ветку. Можно вместе с автором, если будет выступать.
Вот перевод ответа:
Вы смеётесь? Кому и нахрена нужен покоцанный перевод?
Сообщения выкладываете копи-пастом - как они есть, полностью!
Код тоже полностью.
Используемую библиотеку - тоже или ссылку даёте (откуда нам её знать).
Только так.
valeryich,
пожалуйста, прекратите над нами издеваться. Давайте
1. Код (полный, копипастом)
2. Сообщения (полностью, копипастом)
3. Библиотеку (можно ссылку, или полный текст)
4. Объяснение что именно Вы пытаетесь делать.
Если не будет всего этого, Вам тут никто помочь не сможет.
смеяться и выступать я не намерен. Просто хочу решить проблему. Да, я новичок, прошу не судить строго.
Как выложить библиотеку, файлы вроде здесь не прикрепляются?
И кто за вас будет конструктор класса описывать в класе?
У библиотеки есть адрес на гитхабе? - давайте ссылку
файл Н
блиин... ну он правда издевается.
Ага, понятно.
Вот смотрите, Вы обявляете переменные - свойства класса в строка 13-16. Почему-то Вы их объявляете именно в самом классе, а не в конструкторе! А вот кнопки (такие же переменные) решили объявить в конструкторе. Что за двойные стандарты?
Теперь смотрети, что у Вас получилось.
1.
В строке №59 Вы определяете конструктор
Button4::Button4 (
byte
esc_pin,
byte
dec_pin,
byte
inc_pin,
byte
enter_pin,
byte
period)
но ведь в Вашем классе не описан такой конструктор! Описание класса - строки с №10 по №21 - где там описание такого конструктора?
Далее
2.
Внутри функции Button4::Button4 Вы в строке №60 описываете локальную переменную button_Esc. Область видимости этой переменной - её родная функция. Вне функции Button4::Button4 эта переменная не существует! Какого ж хрена Вы пытаетесь её использовать в функции Button4::readButton4() в строке №68? Откуда ей там взяться?
Ну, пока хватит, исправьте это, потом будем смотреть дальше.
Хотя ... знаете, отладьте для начала простенький пример класса из какого-нибудь учебника. Вы же совсем не понимаете, что пишете.
И кто за вас будет конструктор класса описывать в класе?
Конструктор ButtonSerge описан в библиотеке ButtonSerge.h :
Библиотека прикреплена в начале скетча. Что не так?
valeryich,
опять с кодом беда?
Еще такой закидон и помогайте себе сами!
Почитайте мой прошлый пост! Там же сплошные номера строк! Как мне писать Вам что-то на Ваши портянки? "В строке №ХЗ написан бред". Так что-ли?
Библиотеку вчера написал. Пока ещё никуда её не выкладывал, ссылок на нее нет.
Библиотека прикреплена в начале скетча. Что не так?
Не так то, что Вы понятия не имеете как описываются классы. Потренируйтесь на маленьком классе сначала. Научитесь писать конструкторы, переменные класса и т.п.
Попросили текст, я и выложил текст, а не код. Поверьте, я не издеваюсь.
Конструктор ButtonSerge описан в библиотеке ButtonSerge.h :
а конструктуор Button4 где описан?
Впрочем. вам Евгений уже подробнее описал - читайте его.
Приединяюсь к его последней фразе - вы явно вообще не понимаете, как устроены классы, их конструкторы, переменные и методы. Начните с чтения учебника
Библиотеку вчера написал. Пока ещё никуда её не выкладывал, ссылок на нее нет.
Меня терзают смутные сомнения. Автор библиотеки знает, что конструкторы надо описывать в классе, автор основного скетча - нет. Не думаю, что эти коды писал один и тот же человек :-)
Вы мой #16 пост читали? Разбирайтесь. Спокойно разбирайтесь, Вы слишком много и часто постите - Вам подумать некогда.
хотите сказать, что класс ButtonSerge написали вы? - не верю... небось скопировали откуда-то, изменив название?
Иначе непонятно, что помешало вам так же написать класс Button4:)
Ну, пока хватит, исправьте это, потом будем смотреть дальше.
спасибо огромное, начинаю исправлять. Будет долго.
хотите сказать, что класс ButtonSerge написали вы? - не верю... небось скопировали откуда-то, изменив название?
Иначе непонятно, что помешало вам так же написать класс Button4:)
Да, я.
Button4 использует объекты другого класса. А на эту тему (взаимодействие классов между собой) - уроков нет.
Напишу Button4 - выложу здесь работающий вариант.
Button4 использует объекты другого класса. А на эту тему (взаимодействие классов между собой) - уроков нет.
у вас проблема не с "взаимодействием классов между собой", а в совершенно базовых принципах языка Си, например "область действия переменных" - заметьте, не "классов", а обычных банальных переменных.
А когда начитесь правильно описывать переменные - тогда и классы получатся сами собой, они в этом смысле от переменных ничем не отличаются.
Основная ваша проблема в том, что вы забегаете вперед - простой код писать не умеете, а уже за классы и библиотеки схватились.
не надо. Библиотека, написаннная на таком уровне знаний - никому не пригодится. Подобным хламом весь гитхаб забит.
Напишу Button4 - выложу здесь работающий вариант.
Лучше ознакомьтесь вот с этой темой и переопределите Reset как GPIO, чтобы никто прочитать не смог :-)
Вы, конечно, извините, но Ваш класс содержит в себе 4 переменных булевого типа, но никак не 4 объекта типа Кпопка, о чем Вам компилятор и пытается сказать.
Вы, конечно, извините, но Ваш класс содержит в себе 4 переменных булевого типа, но никак не 4 объекта типа Кпопка, о чем Вам компилятор и пытается сказать.
Так про это и мой вопрос был. Я объекты не в том месте и не так объявлял.
Об этом я и "пытался спросить".