<?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=4&amp;t=2809&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2013-04-07T12:19:50+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=2809&amp;mode</id>
<entry>
<author><name><![CDATA[atmel]]></name></author>
<updated>2013-04-07T12:19:50+01:00</updated>
<published>2013-04-07T12:19:50+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2809&amp;p=33693#p33693</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2809&amp;p=33693#p33693"/>
<title type="html"><![CDATA[[C++] Szablon metody w klasie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2809&amp;p=33693#p33693"><![CDATA[
Witam serdecznie po raz pierwszy, ale z pewnością nie ostatni  <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> <br /><br />Mój problem polega zapewne na niedostatecznym poziomie wiedzy odnośnie szablonów funkcji, ale liczę na pomoc szanownych Forumowiczów, a mianowicie:<br /><br />buduję aplikację w C++ dla AVR i chciałbym zaimplementować statyczną metodę w klasie, która w parametrze będzie pobierać referencję do N-elementowej tablicy wskaźników. Funkcja znajdująca się poza klasą działa perfekcyjnie, jednak w zastosowaniu do klasy coś jest nie tak.<br /><br />W ten sposób wygląda prototyp poprawnie działającej funkcji globalnej:<br />[syntax=cpp]template &lt;size_t N&gt; void Calculate(TSensor *(&amp;)&#91;N&#93;);[/syntax]<br />Natomiast taki kod powoduje wyświetlenie błędu o treści &quot;<span style="color: #FF0000">Error 2undefined reference to `void SensorNS::TSensor::Calculate&lt;10u&gt;(SensorNS::TSensor* (&amp;) [10u])' ...</span>&quot; (przestrzeń nazw SensorNS nie ma tutaj znaczenia):<br />[syntax=cpp]class TSensor<br />{<br />public:<br />template &lt;size_t N&gt; static void Calculate(TSensor *(&amp;)&#91;N&#93;);<br />};<br /><br />template &lt;size_t N&gt; void TSensor::Calculate(TSensor *(&amp;Sensor)&#91;N&#93;)<br />{<br />//kod funkcji<br />}[/syntax]<br />Powyższy błąd pojawia się przy wywołaniu takiej statycznej funkcji:<br />[syntax=cpp]TSensor *Sensor&#91;&#93; = {new TSensor, ...};<br />TSensor::Calculate(Sensor);[/syntax]<br />Przy usunięciu szablonów i podaniu na &quot;sztywno&quot; liczby elementów tablicy zamiast N wszystko jest w porządku, ale zależy mi na elastycznym kodzie.<br />Podany kod sprawdzałem na kompilatorze Dev-C++, w którym nie ma żadnych błędów kompilacji. Natomiast w AtmelStudio 6.0 ten błąd występuje.<br />Bardzo proszę o pomoc.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1183">atmel</a> — 7 kwi 2013, o 12:19</p><hr />
]]></content>
</entry>
</feed>