Jak v C / Arduino pridat funkci do knihovny?

Pavel Hudeček edizon na seznam.cz
Sobota Leden 20 10:20:27 CET 2024


Zkontroloval jsem, že command je public, ale už ne _displayfunction :-) 
a to je private. Hm tak tudy ne.

Takže nejlíp napsat autorům, aby tam přidali
a) uvedenou metodu
b) něco jako #ifdef userLCDextension ... a tam byl friend userLCDextension.

PH

Dne 20.01.2024 v 10:00 Miroslav Mraz napsal(a):
> Ano, to je čisté řešení, bohužel má jedinou vadu - nebude to fungovat. 
> Abyste mohl v potomkovi přistoupit k privátním datům, musíte v 
> předkovi udělat něco jako
> friend dispLcdVfd;
> a abyste to mohl udělat, musíte předem deklarovat class dispLcdVfd.
> Takže stejně musíte upravit původní hlavičku. Ale to už je snad lepší 
> inlinovat tu svou funkci přímo do původní hlavičky.
> void bright (uint8_t brg) { command (LCD_FUNCTIONSET | 
> _displayfunction | brg); }
> V c++ lze obvykle vymyslet více řešení, ale které je správné záleží 
> spíš na vkusu daného uživatele.
>
> Mrazík
>
> On 20. 01. 24 7:53, Pavel Hudeček wrote:
>> Jestli je to normální C++, tak udělat vlastní knihovnu, která přes 
>> dědičnost rozšíří tu původní o požadované metody.
>>
>> Nějak takhle:
>>
>> soubor dispLcdVfd.h ------
>>
>> #include "LiquidCrystal.h"
>>
>> class dispLcdVfd : LiquidCrystal {
>>
>> public:
>>      void bright(uint8_t brg);
>>
>> }
>>
>> soubor dispLcdVfd.cpp -----
>>
>> #include "dispLcdVfd.h"
>>
>> void dispLcdVfd::bright(uint8_t brg) {
>>      command(LCD_FUNCTIONSET | _displayfunction | brg);
>> }
>>
>> PH
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list



Další informace o konferenci Hw-list