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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2019-06-05T16:45:48+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=50&amp;t=12428&amp;mode</id>
<entry>
<author><name><![CDATA[Sławek]]></name></author>
<updated>2019-06-05T16:45:48+01:00</updated>
<published>2019-06-05T16:45:48+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12428&amp;p=219535#p219535</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12428&amp;p=219535#p219535"/>
<title type="html"><![CDATA[Re: Metody wirtualne i dziwny (?) warning]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12428&amp;p=219535#p219535"><![CDATA[
Mi się też nie kompilowała metoda wirtualna, a po dołączeniu wspomnianego &quot;delete&quot; kompilator zgłaszał błąd &quot;recipe for target failed&quot; bez umiejscowienia gdzie jest błąd. Dopiero dynamiczne utworzenie obiektu: <br /><br />[syntax=c]Pochodna *pochodna;<br />    pochodna = (Pochodna*) malloc (sizeof(Pochodna));[/syntax]<br /><br />Spowodowało skompilowanie się bez błędu.<br /><br />Klasa wirtualna plik h:<br />[syntax=cpp]class Wirtualna<br />{<br />//functions<br /><br />public:<br />    void operator delete(void * ) {}<br />virtual ~Wirtualna();<br />virtual void Method1()=0;//make Wirtualna not instantiable<br />virtual void Method2()=0;<br />}; //Wirtualna[/syntax]<br /><br />plik cpp:<br />[syntax=cpp]#include &quot;Wirtualna.h&quot;<br /><br />// virtual destructor<br />Wirtualna::~Wirtualna()<br />{<br />} //~Wirtualna[/syntax]<br /><br />klasa pochodna plik h :<br />[syntax=cpp]#include &quot;Wirtualna.h&quot;<br /><br />class Pochodna : Wirtualna<br />{<br />//variables<br />public:<br />protected:<br />private:<br /><br />//functions<br />public:<br />void operator delete(void * ptr) {}<br />Pochodna();<br />~Pochodna();<br />    void Method1();<br />    void Method2() ;<br />protected:<br />private:<br />Pochodna( const Pochodna &amp;c );<br />Pochodna&amp; operator=( const Pochodna &amp;c );<br /><br />}; //Pochodna[/syntax]<br />plik cpp:<br />[syntax=cpp]#include &quot;Pochodna.h&quot;<br /><br />// default constructor<br />Pochodna::Pochodna()<br />{<br />} //Pochodna<br /><br />// default destructor<br />Pochodna::~Pochodna()<br />{<br />} //~Pochodna<br /><br /><br />    void Pochodna::Method1()<br />    {<br />    }<br /><br />    void Pochodna:: Method2()<br />    {<br />    }[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=782">Sławek</a> — 5 cze 2019, o 16:45</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[korpikn]]></name></author>
<updated>2015-11-17T13:13:56+01:00</updated>
<published>2015-11-17T13:13:56+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12428&amp;p=145700#p145700</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12428&amp;p=145700#p145700"/>
<title type="html"><![CDATA[Re: Metody wirtualne i dziwny (?) warning]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12428&amp;p=145700#p145700"><![CDATA[
<div class="quotetitle">mcmacpl napisał(a):</div><div class="quotecontent"><br />Zbudowałem klasę z metodami wirtualnymi. Klasa LCD - odpowiada za sterowanie wyświetlaczem LCD. Dziedziczy po niej klasa LCD_I2C - ta jest wcieleniem klasy LCD komunikującym się za pomocą ekspandera po I2C. Klasa LCD definiuje kilka metod wirtualnych (przeważnie z pustym ciałem), które nadpisane są w klasie LCD_I2C.<br /><br />Wszystko działa świetnie, tylko podczas kompilacji otrzymuję warningi:<br /><br />Class '[C@3f926c' has virtual method 'setBacklight' but non-virtual destructorLCD.h<br /><br />Destruktor właściwie nie jest mi potrzebny. Próbowałem nawet go definiować, ale wtedy rozbijam się o error mówiący o braku deklaracji delete(void*)<br /><br />Jak można pozbyć się tych warningów?<br /></div><br /><br />Trzeba dodać do klasy podstawowej wirtualny destruktor<br />[syntax=cpp]virtual ~LCD() {}[/syntax],a następnie przed definicją klasy LCD<br />[syntax=cpp]void operator delete(void * ptr) {}[/syntax]<br /><br />Wtedy kompilacja przechodzi bez problemów.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11146">korpikn</a> — 17 lis 2015, o 13:13</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mcmacpl]]></name></author>
<updated>2015-07-23T20:29:25+01:00</updated>
<published>2015-07-23T20:29:25+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12428&amp;p=135342#p135342</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12428&amp;p=135342#p135342"/>
<title type="html"><![CDATA[Metody wirtualne i dziwny (?) warning]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12428&amp;p=135342#p135342"><![CDATA[
Zbudowałem klasę z metodami wirtualnymi. Klasa LCD - odpowiada za sterowanie wyświetlaczem LCD. Dziedziczy po niej klasa LCD_I2C - ta jest wcieleniem klasy LCD komunikującym się za pomocą ekspandera po I2C. Klasa LCD definiuje kilka metod wirtualnych (przeważnie z pustym ciałem), które nadpisane są w klasie LCD_I2C.<br /><br />Wszystko działa świetnie, tylko podczas kompilacji otrzymuję warningi:<br /><br />Class '[C@3f926c' has virtual method 'setBacklight' but non-virtual destructorLCD.h<br /><br />Destruktor właściwie nie jest mi potrzebny. Próbowałem nawet go definiować, ale wtedy rozbijam się o error mówiący o braku deklaracji delete(void*)<br /><br />Jak można pozbyć się tych warningów?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10383">mcmacpl</a> — 23 lip 2015, o 20:29</p><hr />
]]></content>
</entry>
</feed>