<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Dynamisches Objekt aus Library erstellen - liefert Fehlermeldung]]></title><description><![CDATA[<p>Hi,</p>
<p>wohl mein erster Post hier <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /> Also Hallo an alle. Ich bastele seit geraumer Zeit an einer Arduino Bibliothek für ein Projekt. Leider weis ich nicht was ich falsch gemacht habe. Mittlerweile habe ich schon viele Tutorials und C++ Bücher bzgl. dieses Problems gewälzt. Aber ich finde immernoch nicht die Ursache bzw nicht die Lösung.</p>
<p>Es soll duch eine Klasse mit zwei initialisierenden Argumenten dynamisch ein Objekt aus einer anderen Klasse des Headerfiles erstellt werden.</p>
<p>Header File: wurst.h</p>
<pre><code class="language-cpp">#include &quot;Arduino.h&quot;

class wurst
{
public:
    wurst(int _pin, const char* _ad): dpin(_pin), typeAD(_ad){};
protected:
    int dpin;
    const char* typeAD;

};

class salami: public wurst
{
public:
    salami(int _pin, const char* _ad): wurst(_pin,_ad)
    {
        pinMode(dpin, OUTPUT);
    };
    void go();
    void stop();

};
</code></pre>
<p>die zugehörige wurst.cpp</p>
<pre><code class="language-cpp">#include &quot;Arduino.h&quot;
#include &quot;wurst.h&quot;

void salami::go()
{
   /*....*/
    if(*typeAD == 'D')
        digitalWrite(driverpin, HIGH);

}

void salami::stop()
{
   /*...*/
    if(*typeAD == 'D')
        digitalWrite(driverpin, LOW);

}
</code></pre>
<p>die folgende Klasse soll nun eine Instanz von salami erstellen:</p>
<p>wurstbrot.h</p>
<pre><code class="language-cpp">#include &quot;Arduino.h&quot;
#include &quot;wurst.h&quot;

class wurstbrot
{
public:
    wurstbrot(int _p, const char* _ad){

        salami *pSalami = new salami(_p,_ad);
    };
    void goWorkCycle(){
            pSalami-&gt;go();
        };
    void stopWorkCycle()
    {
        pSalami-&gt;stop();
    };
};
</code></pre>
<p>wenn ich nun Arduino das überprüfen lasse:</p>
<pre><code class="language-cpp">#include &quot;wurstbrot.h&quot;

wurstbrot lecker(13,&quot;D&quot;);

void setup()
{  
}

void loop()
{
 /* lecker.goWorkCycle();
  delay(100);
  lecker.stopWorkCycle();
  delay(100);*/
}
</code></pre>
<p>erhalte ich folgenden Fehler:</p>
<pre><code class="language-cpp">In file included from wurstbrottest.cpp:1:
/Users/admin/CloudDocs/Projekte/Arduino/libraries/driver/wurstbrot.h: In constructor 'wurstbrot::wurstbrot(int, const char*)':
/Users/admin/CloudDocs/Projekte/Arduino/libraries/driver/wurstbrot.h:20: warning: unused variable 'pSalami'
/Users/admin/CloudDocs/Projekte/Arduino/libraries/driver/wurstbrot.h: In member function 'void wurstbrot::goWorkCycle()':
/Users/admin/CloudDocs/Projekte/Arduino/libraries/driver/wurstbrot.h:23: error: 'pSalami' was not declared in this scope
/Users/admin/CloudDocs/Projekte/Arduino/libraries/driver/wurstbrot.h: In member function 'void wurstbrot::stopWorkCycle()':
/Users/admin/CloudDocs/Projekte/Arduino/libraries/driver/wurstbrot.h:27: error: 'pSalami' was not declared in this scope
</code></pre>
<p>[cpp]</p>
<p>Ich verstehe leider nicht warum <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>Wäre super wenn einer von euch ein paar Gedanken dazu hat <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
<p>Viele Grüße<br />
sicluceatlux</p>
<p>P.S.: wenn ich stopWorkCycle() und goWorkCycle() herausnehme akzeptiert der compiler es. Jedoch will ich ja diese funktionen aber implementieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/307392/dynamisches-objekt-aus-library-erstellen-liefert-fehlermeldung</link><generator>RSS for Node</generator><lastBuildDate>Thu, 06 Aug 2026 19:13:50 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/307392.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 25 Aug 2012 18:14:27 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Dynamisches Objekt aus Library erstellen - liefert Fehlermeldung on Sat, 25 Aug 2012 18:18:49 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>wohl mein erster Post hier <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /> Also Hallo an alle. Ich bastele seit geraumer Zeit an einer Arduino Bibliothek für ein Projekt. Leider weis ich nicht was ich falsch gemacht habe. Mittlerweile habe ich schon viele Tutorials und C++ Bücher bzgl. dieses Problems gewälzt. Aber ich finde immernoch nicht die Ursache bzw nicht die Lösung.</p>
<p>Es soll duch eine Klasse mit zwei initialisierenden Argumenten dynamisch ein Objekt aus einer anderen Klasse des Headerfiles erstellt werden.</p>
<p>Header File: wurst.h</p>
<pre><code class="language-cpp">#include &quot;Arduino.h&quot;

class wurst
{
public:
    wurst(int _pin, const char* _ad): dpin(_pin), typeAD(_ad){};
protected:
    int dpin;
    const char* typeAD;

};

class salami: public wurst
{
public:
    salami(int _pin, const char* _ad): wurst(_pin,_ad)
    {
        pinMode(dpin, OUTPUT);
    };
    void go();
    void stop();

};
</code></pre>
<p>die zugehörige wurst.cpp</p>
<pre><code class="language-cpp">#include &quot;Arduino.h&quot;
#include &quot;wurst.h&quot;

void salami::go()
{
   /*....*/
    if(*typeAD == 'D')
        digitalWrite(driverpin, HIGH);

}

void salami::stop()
{
   /*...*/
    if(*typeAD == 'D')
        digitalWrite(driverpin, LOW);

}
</code></pre>
<p>die folgende Klasse soll nun eine Instanz von salami erstellen:</p>
<p>wurstbrot.h</p>
<pre><code class="language-cpp">#include &quot;Arduino.h&quot;
#include &quot;wurst.h&quot;

class wurstbrot
{
public:
    wurstbrot(int _p, const char* _ad){

        salami *pSalami = new salami(_p,_ad);
    };
    void goWorkCycle(){
            pSalami-&gt;go();
        };
    void stopWorkCycle()
    {
        pSalami-&gt;stop();
    };
};
</code></pre>
<p>wenn ich nun Arduino das überprüfen lasse:</p>
<pre><code class="language-cpp">#include &quot;wurstbrot.h&quot;

wurstbrot lecker(13,&quot;D&quot;);

void setup()
{  
}

void loop()
{
 /* lecker.goWorkCycle();
  delay(100);
  lecker.stopWorkCycle();
  delay(100);*/
}
</code></pre>
<p>erhalte ich folgenden Fehler:</p>
<pre><code class="language-cpp">In file included from wurstbrottest.cpp:1:
/Users/admin/CloudDocs/Projekte/Arduino/libraries/driver/wurstbrot.h: In constructor 'wurstbrot::wurstbrot(int, const char*)':
/Users/admin/CloudDocs/Projekte/Arduino/libraries/driver/wurstbrot.h:20: warning: unused variable 'pSalami'
/Users/admin/CloudDocs/Projekte/Arduino/libraries/driver/wurstbrot.h: In member function 'void wurstbrot::goWorkCycle()':
/Users/admin/CloudDocs/Projekte/Arduino/libraries/driver/wurstbrot.h:23: error: 'pSalami' was not declared in this scope
/Users/admin/CloudDocs/Projekte/Arduino/libraries/driver/wurstbrot.h: In member function 'void wurstbrot::stopWorkCycle()':
/Users/admin/CloudDocs/Projekte/Arduino/libraries/driver/wurstbrot.h:27: error: 'pSalami' was not declared in this scope
</code></pre>
<p>[cpp]</p>
<p>Ich verstehe leider nicht warum <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>Wäre super wenn einer von euch ein paar Gedanken dazu hat <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
<p>Viele Grüße<br />
sicluceatlux</p>
<p>P.S.: wenn ich stopWorkCycle() und goWorkCycle() herausnehme akzeptiert der compiler es. Jedoch will ich ja diese funktionen aber implementieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2245459</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2245459</guid><dc:creator><![CDATA[sicluceatlux]]></dc:creator><pubDate>Sat, 25 Aug 2012 18:18:49 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamisches Objekt aus Library erstellen - liefert Fehlermeldung on Sat, 25 Aug 2012 18:23:16 GMT]]></title><description><![CDATA[<p>Der Fehler ist lächerlich einfach:</p>
<pre><code class="language-cpp">wurstbrot(int _p, const char* _ad){ 

        salami *pSalami = new salami(_p,_ad);  ///pSalami ist eine  :warning:  scope-lokale  :warning:  Variable! Sie existiert nur im Konstruktor und ist außerhalb auch gar nicht sichtbar.
    }
</code></pre>
<p>Was du willst, ist:</p>
<pre><code class="language-cpp">class wurstbrot 
{ 
    salami *pSalami;

public: 
    wurstbrot(int _p, const char* _ad):
    pSalami(new salami(_p,_ad))
    {} 

    void goWorkCycle(){ 
            pSalami-&gt;go(); 
        }; 
    void stopWorkCycle() 
    { 
        pSalami-&gt;stop(); 
    }; 
};
</code></pre>
<p>Übrigens: Wieso muss denn pSalami ein Zeiger auf ein Heap-Objekt sein? Was spricht gegen ein Stackobjekt?<br />
Edit: Also wieso nicht einfach</p>
<pre><code class="language-cpp">salami Salami;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2245462</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2245462</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Sat, 25 Aug 2012 18:23:16 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamisches Objekt aus Library erstellen - liefert Fehlermeldung on Sat, 25 Aug 2012 18:29:06 GMT]]></title><description><![CDATA[<p>Werde es gleich mal testen :)!</p>
<p>Da merkt man dass ich noch nicht all zu lange im oop bin ;).<br />
Genau deshalb zeigt es auf den Heap ich möchte mich etwas weiterentwickeln, was das Arbeiten mit Pointern etc. betrifft.</p>
<p>Dachte mir schon fast dass es irgendwie etwas mit dem gültigkeitsbereich zu tun hat. Aber mir ist keine Lösung eingefallen bzw aufgefallen.</p>
<p>Also vielen Dank! You made my day <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
<p>Gruß<br />
sicluceatlux</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2245464</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2245464</guid><dc:creator><![CDATA[sicluceatlux]]></dc:creator><pubDate>Sat, 25 Aug 2012 18:29:06 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamisches Objekt aus Library erstellen - liefert Fehlermeldung on Sat, 25 Aug 2012 18:39:26 GMT]]></title><description><![CDATA[<p>sicluceatlux schrieb:</p>
<blockquote>
<p>Werde es gleich mal testen :)!</p>
<p>Da merkt man dass ich noch nicht all zu lange im oop bin ;).</p>
</blockquote>
<p>Och, mit OOP hat das wenig zu tun.<br />
Schnapp dir ein Grundlagen-Buch, das ist immer gut <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2245466</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2245466</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Sat, 25 Aug 2012 18:39:26 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamisches Objekt aus Library erstellen - liefert Fehlermeldung on Sat, 25 Aug 2012 18:46:19 GMT]]></title><description><![CDATA[<p>Hab ich bereits, aber wie gesagt bin neu und war so darauf fixiert, dass ich es im Konstruktor definieren muss, dass mir nicht aufgefallen ist das ich es über public, prot..... etc definieren müsste :S</p>
<p>also nochmals thx...und werde natürlich nochmal die Grundlagen durchgehen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>btw hat funktioniert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2245467</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2245467</guid><dc:creator><![CDATA[sicluceatlux]]></dc:creator><pubDate>Sat, 25 Aug 2012 18:46:19 GMT</pubDate></item></channel></rss>