<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pl-pl">
<link rel="self" type="application/atom+xml" href="https://forum.atnel.pl/feed.php?f=50&amp;t=8596&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2014-10-04T09:58:16+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=50&amp;t=8596&amp;mode</id>
<entry>
<author><name><![CDATA[Paul Dirac]]></name></author>
<updated>2014-10-04T09:58:16+01:00</updated>
<published>2014-10-04T09:58:16+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8596&amp;p=97639#p97639</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8596&amp;p=97639#p97639"/>
<title type="html"><![CDATA[Re: Wskaźniki na metody]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8596&amp;p=97639#p97639"><![CDATA[
Dobra czaje. wielkie dzięki panowie.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1035">Paul Dirac</a> — 4 paź 2014, o 09:58</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Paul Dirac]]></name></author>
<updated>2014-10-03T20:54:23+01:00</updated>
<published>2014-10-03T20:54:23+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8596&amp;p=97606#p97606</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8596&amp;p=97606#p97606"/>
<title type="html"><![CDATA[Re: Wskaźniki na metody]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8596&amp;p=97606#p97606"><![CDATA[
Cześć mam pewien problem ideologiczny z liniami:<br />[syntax=cpp]typedef void (Dioda::*callbackType)(void);<br /> <br />// Zmienna przechowująca callback w klasie Dioda.<br />// Od razu robimy wskazanie na metodę w ramach klasy Dioda<br />// Warto myśleć o nim jak o adresie z przesunięciem względem początku<br />// klasy Dioda.<br />static callbackType migacz = &amp;Dioda::callback;[/syntax]<br /><br />W pierwszym wersie deklaruje typ na metody klasy Dioda na wskaźniki na funckje postaci nazwa_funkcji(void). Chyba nazwa funkcji jest pewnym adresem na nią. <br /><br />Następnie deklaruje migacz o typie callbackType, ale skoro to jest wskaźnik, więc tutaj jakbym miał adres na wsaźnik na funkcje. Więc do adresu przypisuje adres metody Dioda:callback;<br /><br />Coś podobnego jak przy zwykłych wskaznikach<br />uint8_t *zmienna;<br />zmienna = &amp;x; jest przypisanie do adresu<br /><br />Dobrze to rozumiem?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1035">Paul Dirac</a> — 3 paź 2014, o 20:54</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[atmel]]></name></author>
<updated>2014-09-21T21:21:13+01:00</updated>
<published>2014-09-21T21:21:13+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8596&amp;p=96290#p96290</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8596&amp;p=96290#p96290"/>
<title type="html"><![CDATA[Re: Wskaźniki na metody]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8596&amp;p=96290#p96290"><![CDATA[
Borykałem się dokładnie z tym samym problemem odnośnie modułów USART.<br />Zrealizowałem to w sposób dość kulawy, a mianowicie utworzyłem globalną tablicę wskaźników na funkcję, które były wywoływane przez odpowiednie funkcje obsługi przerwań.<br />Tworzyłem wtedy dwa obiekty do których dodatkowo przekazywałem nr układu (0 i 1 odpowiednio dla USART0 i USART1). Wiem że nie jest to najlepszy sposób, ale przy większej ilości układów można utworzyć tablicę dynamiczną lub listę jednokierunkową zawierającą odpowiednie wskaźniki.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1183">atmel</a> — 21 wrz 2014, o 21:21</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[atmel]]></name></author>
<updated>2014-09-21T20:54:49+01:00</updated>
<published>2014-09-21T20:54:49+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8596&amp;p=96285#p96285</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8596&amp;p=96285#p96285"/>
<title type="html"><![CDATA[Re: Wskaźniki na metody]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8596&amp;p=96285#p96285"><![CDATA[
Sytuacja faktycznie jest nieciekawa...<br />Na wstępie takie spostrzeżenia:<br />Z linii 15 można usunąć operator pozyskania adresu (ampersand), gdyż w przypadku funkcji takie działanie (pobrania adresu) jest domyślne.<br /><br />Dodatkowo linię 36 można zamienić na<br /><br />[syntax=c]if(migacz) led-&gt;migacz();[/syntax]<br />Niemniej jednak nietypowy wydaje mi się dostęp do pola &quot;migacz&quot;, które nie zostało zadeklarowane w ciele klasy...<br /><br /><br />Jeśli chodzi o samo sedno problemu to jedyne co mi przychodzi do głowy to modyfikator &quot;extern&quot; dla obiektu &quot;led&quot; lub funkcja rejestrująca callback, wywoływana z poziomu pliku &quot;main.c&quot;.<br /><br />Wiązanie obiektu z zasobem sprzętowym niestety musi wykorzystywać zmienne globalne, co nie jest zbyt dobrym pomysłem, ale faktycznie nie widzę innego rozwiązania.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1183">atmel</a> — 21 wrz 2014, o 20:54</p><hr />
]]></content>
</entry>
</feed>