Вывод структуры автоматом
- Войдите на сайт для отправки комментариев
Втр, 21/01/2020 - 14:18
Добрый день!
Подскажите, есть ли возможность сделать автоматический вывод содержимого структуры в монитор, по типу как функция объекта toString()??
то есть сделать преобразоване например в массив char?
можно конечно, если напишите функцию вывода для структуры
struct XXX {
.
.
.
void ToString(Print &OutStream){
OutStream<<...<<...<<...;
}
}
и сё.
Вот здесь подробно, с примерами написано как это делается.
описать в структуре нужные операторы, например, operator String()
Это абсолютно то, что я хотел узнать! Огромное спасибо!!!
но пока я рыл просторы интернета, нашел такую вещь как перегрузка операторов преобразования.
в ардуино это можно применять?
struct { int a; char ch; operator *char () { return ((*char) a+b) } }типа этого, что бы приведении структуры к типу массив символов это происходило по умолчанию.
В ардуино используется язык С++. Дальше объяснять?
struct str_t { int _a; char _ch; str_t(): _a(0), _ch('z') {} str_t(int a, char ch): _a(a), _ch(ch) {} /*писать большую пятерку мне влом*/ operator String() { String r = String(_ch) + String("=") + String(_a); return r; } }; //----------------------------- void setup() { str_t bb, aa = {12, 'A'}; Serial.begin(9600); Serial.println(aa); Serial.println(bb); } void loop() { }Вот такой код, почему не работает?
struct MyStruct { char a; byte b; operator char*() { char *res[] = {a, b}; return res; } }; MyStruct s = {'k', 15}; void setup() { Serial.println(s); } void loop() {}выдает ошибку: cannot convert 'char**' to 'char*' in return
Хотел избежать в скетче использование объектов String (вроде как пишут что дополнительно в памяти забирает 1кб)
В ардуино используется язык С++. Дальше объяснять?
Я бы с удовольствием бы послушал... (изучал яву и немного лу, в с++ только пытаюсь разобраться) но думаю не дождусь этого
но уточню в скетче подерживается полный синтаксис с11, с13, с17, все правильно я понял?
пошти правильно, Схх от версии ИДЕ зависит. Послушать не получится, это долго будет.
выдает ошибку: cannot convert 'char**' to 'char*' in return
может вы рано в перегрузку операторов полезли, вы пока даже ссылки и указатели не понимаете...
По ошибке - звездочку в строчке 6 уберите
Про ошибку Вам в #10 правильно сказали, только результат выполнения Вас всё равно не обрадует :-(