Как передать переменную в класс? WatchPower libary
- Войдите на сайт для отправки комментариев
Здравствуйте, столкнулся с проблемой, хочу сделать примитивное управление инвертором. Для этого использую библиотеку "//github.com/MHassanNadeem/WatchPower". Все бы хорошо но так и не смог сделать передачу переменной с нужными мне данными в класс.
Создал функцию, но при вызове с аргументами просто ошибка компиляции.
Пример вызова который работает:
WatchPower::setBulkChargingVoltage();
Так все отлично работает, но мне еще нужно сюда передать данные для отправки команды инвертору.
Принцип такой:
1. На странице А изменяю настройки, например с 40.0 V меняю на 41.0 далее выполняю get запрос и передаю измененные параметры;
2. После чего паршу HTTP данные получаю значения из GET запроса, после вызываю функцию (WatchPower::setBulkChargingVoltage()) для отправки команды на инвертора. Но как туда еще о напряжении передать?
Спасибо!
Если у метода не предусмотрено, то никак. Только писать свой метод
В общем так, выкладывайте Ваш код и прямую ссылку на библиотеку. Без этого разговор ни о чём.
Да, но все варианты которые нашел в интернете не подошли. вечно на что то ругалось.
Пример:
Я к тому, что Вы же автор этой функции. Объявите ее с нужными аргументами, в чем проблема-то?
Можно пример?
1. Как передавать?
2. Как правильно вписать в функцию аргументы?
Можно пример?
1. Как передавать?
2. Как правильно вписать в функцию аргументы?
Повторяю второй раз для альтернативно-одарённых (больше не повторять не буду, ибо сочту, что "медицина бессильна")
Я Вас не оскорблял. Я пред. сообщения видел, только домой пришел. Просто выше человеку ответил. Быстро решу дом. дела и все оформлю.
Я Вас не оскорблял.
Я Вас тоже.
WatchPower.cpp
WatchPower.h
библиотеку тоже сюда выложите, пожалуйста
В текстовом виде или как? Не совсем понял.
Все, что необходимо для понимания проблемы, должно быть выложено здесь. По внешним ссылкам никто ходить не будет.
И - да, текст выкладывать только в виде текста.
какую функцию вы добавили? parseRating() ?
и какая ошибка7
В файле WatchPower.h
Добавил:
Далее в файле WatchPower.cpp
Добавил
у вас в этом коде куча методов с параметрами - возьмите любой и сделайте по аналогии.
Тот же parseRating() например
В файле WatchPower.h
Добавил:
Далее в файле WatchPower.cpp
Добавил
Так Вы ж её добавили без аргументов. А хотите передавать параметры. Какие? Добавьте их к описанию функции-то!
Первый вариант, который попробовал по аналогии.
Ошибка:
no matching function for call to 'WatchPower::setBulkChargingVoltage(int*)'
Второй вариант:
Ошибка:
no matching function for call to 'WatchPower::setBulkChargingVoltage(int&)
Пробовал, делать как в библиотеке, но не компилируется.
Бред какой-то. Почему разные описания? Почему в объявлении (value), а в определении (int &value)? Компилятор же вам почти по русски пишет о несоответствии
Для это я задал вопрос, потому как не понимаю как именно правильно задать аргументы.
Для это я задал вопрос, потому как не понимаю как именно правильно задать аргументы.
Для понимания - https://www.google.ru/search?newwindow=1&sxsrf=ALeKk014a_us5j-eqCGHhGPuu2PxT7ZYKQ%3A1608911018122&ei=qgjmX6WKB-KIrwSx2Ij4CA&q=c%2B%2B+аргументы+функции&oq=c+++аргументы+функции&gs_lcp=CgZwc3ktYWIQARgAMgcIIxCwAxAnMgcIABBHELADMgcIABBHELADMgcIABBHELADMgcIABBHELADMgcIABBHELADMgcIABBHELADMgcIABBHELADMgcIABBHELADUABYAGDfTWgBcAJ4AIABAIgBAJIBAJgBAKoBB2d3cy13aXrIAQnAAQE&sclient=psy-ab
Вот пошло, спасибо большое, именно то что искал. Я перелопатил кучу но не мог понять как правильно сформулировать запрос. Вы дали именно, то что нужно.
Итоговый код:
Можно я глупый вопрос задам (уж простите мужчину во второй стадии зрелости :) ).
Вопрос: Если есть класс (какой-то, к примеру, exemple1) и у него есть метод - void exemple1::exMethod1(void) (простите за ошибки возможные, читайте суть). Я ведь могу породить от этого класса свой, например, exemple2, а уже в нем переопределить функцию exMethod1, к примеру, так: void exemple1::exMethod1(byte cols)? Библиотека с классом распространяется с исходником, ничего мешать не должно? Или есть подводные камни? Или тут идут ограничения о том какой именно метод (private, public и т.п.)?
Если не будете обзываться и троллить - огромное спасибо за ответы.
Да. Цель-то в чем?
ЗЫ. Книжка про ООП - Вам в помощь.
Ну это полный оффтоп.
Цель - понять. Почему-то b707 в его вопросе о функции родительского класса не применил такую "фишку" (что-то его тему найти не могу, чтобы ссылку дать), если так можно реализовать в ардуино-проектах? Если можно было в принципе - почему тогда не применил? Наверное ответ не просто "Да".
b707, Вы то точно поняли о чем вопрос. Дополните, если прочтете.
b707, Вы то точно поняли о чем вопрос. Дополните, если прочтете.
Прочитал :)
Но что-то тоже не очень понимаю, о чем речь.
С полгода назад я спрашивал, можно ли заставить метод дочернего класса ВСЕГДА вызываться вместо родительсткого, не обьявляя последний виртуальным... это?
Вы путаете длинное с тёплым.
"Переопределить" - это определить в дочернем классе метод с такой же сигнатурой (т.е. с такими же именем, типами параметров и возвращаемым значением).
Вы же хотите сделать функцию с другим набором параметров - это называется "перегрузить имя". Это можно делать всегда, хоть в дочернем классе, хоть в том же самом - нет проблем.
Единственное ограничение, чтобы эти функции синтаксически отличались одна от другой. Например, если одна функция без параметров, как у Вас, а другая с параметрами, то нельзя давать всем параметрам значения по умолчанию, иначе при вызове с пустыми скобками компилятор не поймёт кого именно Вы хотите вызвать.
Евгений Петрович, над Вашим "троллингом" я не могу даже думать обижаться, очень уж он добрый и с хорошими разъяснениями. Спасибо!
b707, Вы то точно поняли о чем вопрос. Дополните, если прочтете.
Прочитал :)
Но что-то тоже не очень понимаю, о чем речь.
С полгода назад я спрашивал, можно ли заставить метод дочернего класса ВСЕГДА вызываться вместо родительсткого, не обьявляя последний виртуальным... это?
Ой, да - это. "Тут помню, там не помню...". Простите, был не прав. Почему-то вчера подумал, что наследованием можно было решить проблему, а вот и нет. А отталкивался от вопроса ТС... :(