<?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[Smart Pointer Verständnisfrage]]></title><description><![CDATA[<p>Ich befasse mich gerade mit Smart Pointer und es kommen sofort einige Fragen auf, da dieses Thema komplett neu für mich ist.<br />
Angenommen ich habe eine Klasse Test und eine Klasse AnyClass von der ich ein Objekt erzeugen möchte. Im Konstruktor der Klasse Test schreibe ich folgendes:</p>
<pre><code>Test::Test()
{
	std::shared_ptr&lt;AnyClass&gt; sharedPointer(new AnyClass(&quot;Test Parameter&quot;));
}
</code></pre>
<p>Wann wird die Instanz von AnyClass gelöscht? Wenn der Destruktor von der Klasse Test aufgerufen wurde? Oder beim Verlassen des Konstruktors? Bei std::unique_ptr weiß ich, dass es gelöscht wird, sobald der Gültigkeitsbereich verlassen wird. Aber bei shared_ptr habe ich noch so meine Schwierigkeiten. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/318838/smart-pointer-verständnisfrage</link><generator>RSS for Node</generator><lastBuildDate>Sun, 26 Jul 2026 09:52:26 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/318838.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 28 Jul 2013 20:12:56 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Smart Pointer Verständnisfrage on Sun, 28 Jul 2013 20:12:56 GMT]]></title><description><![CDATA[<p>Ich befasse mich gerade mit Smart Pointer und es kommen sofort einige Fragen auf, da dieses Thema komplett neu für mich ist.<br />
Angenommen ich habe eine Klasse Test und eine Klasse AnyClass von der ich ein Objekt erzeugen möchte. Im Konstruktor der Klasse Test schreibe ich folgendes:</p>
<pre><code>Test::Test()
{
	std::shared_ptr&lt;AnyClass&gt; sharedPointer(new AnyClass(&quot;Test Parameter&quot;));
}
</code></pre>
<p>Wann wird die Instanz von AnyClass gelöscht? Wenn der Destruktor von der Klasse Test aufgerufen wurde? Oder beim Verlassen des Konstruktors? Bei std::unique_ptr weiß ich, dass es gelöscht wird, sobald der Gültigkeitsbereich verlassen wird. Aber bei shared_ptr habe ich noch so meine Schwierigkeiten. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2341833</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2341833</guid><dc:creator><![CDATA[spointer]]></dc:creator><pubDate>Sun, 28 Jul 2013 20:12:56 GMT</pubDate></item><item><title><![CDATA[Reply to Smart Pointer Verständnisfrage on Sun, 28 Jul 2013 20:27:41 GMT]]></title><description><![CDATA[<p>Genauso wie bei unique_ptr. Das '}' endet den Block was den shared_ptr out of Scope laufen lässt, was das AnyClass-Objekt löscht. Der Unterschied ist nur, dass der letzte shared_ptr das Objekt löscht, aber da du eh nur einen hast tritt der Effekt nicht auf.</p>
<p>Anderes Beispiel:</p>
<pre><code>void foo(std::shared_ptr&lt;AnyClass&gt; sharedPointer)[
    static std::shared_ptr&lt;AnyClass&gt; sp;
    sp = sharedPointer;
}

Test::Test()
{
    std::shared_ptr&lt;AnyClass&gt; sharedPointer(new AnyClass(&quot;Test Parameter&quot;));
    foo(sharedPointer);
}
</code></pre>
<p>In diesem Fall überlebt das Objekt von AnyClass, weil es noch einen shared_ptr in foo gespeichert gibt. Wenn du aber den Konstruktor nochmal aufrufst wird der alte sp überschrieben und das Objekt wird gelöscht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2341835</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2341835</guid><dc:creator><![CDATA[nwp3]]></dc:creator><pubDate>Sun, 28 Jul 2013 20:27:41 GMT</pubDate></item><item><title><![CDATA[Reply to Smart Pointer Verständnisfrage on Sun, 28 Jul 2013 20:36:25 GMT]]></title><description><![CDATA[<p>Das hier wäre bestimmt auch was für dich: <a href="http://channel9.msdn.com/Series/C9-Lectures-Stephan-T-Lavavej-Standard-Template-Library-STL-/C9-Lectures-Stephan-T-Lavavej-Standard-Template-Library-STL-3-of-n" rel="nofollow">http://channel9.msdn.com/Series/C9-Lectures-Stephan-T-Lavavej-Standard-Template-Library-STL-/C9-Lectures-Stephan-T-Lavavej-Standard-Template-Library-STL-3-of-n</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2341836</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2341836</guid><dc:creator><![CDATA[out]]></dc:creator><pubDate>Sun, 28 Jul 2013 20:36:25 GMT</pubDate></item><item><title><![CDATA[Reply to Smart Pointer Verständnisfrage on Mon, 29 Jul 2013 06:14:01 GMT]]></title><description><![CDATA[<p>Danke für eure Hilfe, doch eine Frage habe ich noch. In meinem Buch steht, dass wenn ich dynamische Objekte erstelle, soll ich immer shared_ptr verwenden.</p>
<blockquote>
<p>Wenn Sie dynamische Objekte erzeugen, verwenden Sie shared_ptr. Über die Zerstörung<br />
mit delete an einer geeigneten Stelle müssen Sie sich keine Gedanken mehr machen.</p>
</blockquote>
<p>Aber wenn ich innerhalb einer Klasse ein dynamisches privates Objekt erzeugen möchte, was für alle Methoden zugänglich ist und im Destruktor wieder zerstört wird, dann würde ich es im Normalfall so machen wie ich es gelernt habe: Im Konstruktor das Objekt mit <em>new</em> erzeugen und im Destruktor mit <em>delete</em> löschen, so ist es für alle Methoden zugänglich. Hat diese Vorgehensweise irgendwelche Nachteile? Und wenn ich tatsächlich shared_ptr verwenden sollte, wie muss ich es dann machen, dass das Objekt nicht sofort zerstört wird sobald der Konstruktor verlassen wird? Muss ich es irgendwie am Leben erhalten so wie nwp3 es getan hat?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2341867</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2341867</guid><dc:creator><![CDATA[spointer]]></dc:creator><pubDate>Mon, 29 Jul 2013 06:14:01 GMT</pubDate></item><item><title><![CDATA[Reply to Smart Pointer Verständnisfrage on Mon, 29 Jul 2013 06:32:52 GMT]]></title><description><![CDATA[<p>spointer schrieb:</p>
<blockquote>
<p>Danke für eure Hilfe, doch eine Frage habe ich noch. In meinem Buch steht, dass wenn ich dynamische Objekte erstelle, soll ich immer shared_ptr verwenden.</p>
<blockquote>
<p>Wenn Sie dynamische Objekte erzeugen, verwenden Sie shared_ptr. Über die Zerstörung<br />
mit delete an einer geeigneten Stelle müssen Sie sich keine Gedanken mehr machen.</p>
</blockquote>
</blockquote>
<p>std::unique_ptr&lt;..&gt; ist die erste Wahl, wenn ein besitzender Zeiger zum Einsatz kommt. std::shared_ptr&lt;..&gt; ist die Ausnahme und nur einzusetzen, wenn es nötig ist (= Besitz nicht klar geregelt).</p>
<p>spointer schrieb:</p>
<blockquote>
<p>Aber wenn ich innerhalb einer Klasse ein dynamisches privates Objekt erzeugen möchte, was für alle Methoden zugänglich ist und im Destruktor wieder zerstört wird, dann würde ich es im Normalfall so machen wie ich es gelernt habe: Im Konstruktor das Objekt mit <em>new</em> erzeugen und im Destruktor mit <em>delete</em> löschen, so ist es für alle Methoden zugänglich. Hat diese Vorgehensweise irgendwelche Nachteile?</p>
</blockquote>
<p>Nein, dann sollst du std::unique_ptr&lt;..&gt; Verwenden. Mit rohen Zeigern (new/delete) hast du unter Umständen Probleme mit Exceptions. Ausserdem bist du dann gezwungen den Destruktor, den Copy-Konstruktor und den Assignment-Operator zu implementieren.</p>
<p>spointer schrieb:</p>
<blockquote>
<p>Und wenn ich tatsächlich shared_ptr verwenden sollte, wie muss ich es dann machen, dass das Objekt nicht sofort zerstört wird sobald der Konstruktor verlassen wird? Muss ich es irgendwie am Leben erhalten so wie nwp3 es getan hat?</p>
</blockquote>
<p>Nein. Dann musst du den std::shared_ptr&lt;..&gt; (bzw. std::unique_ptr&lt;..&gt;) zu einem Member machen.</p>
<p><strong>Edit:</strong><br />
Bsp.</p>
<pre><code>#include &lt;memory&gt;

class A
{
};

class B
{
public:
  B()
    : a_(new A())
  {}
private:
  // Das Objekt, auf das a_ referenziert, lebt solange
  // wie ein Objekt von B. B besitzt ein Objekt von A.
  std::unique_ptr&lt;A&gt; a_;
};

int main()
{
  B b;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2341869</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2341869</guid><dc:creator><![CDATA[theta]]></dc:creator><pubDate>Mon, 29 Jul 2013 06:32:52 GMT</pubDate></item><item><title><![CDATA[Reply to Smart Pointer Verständnisfrage on Mon, 29 Jul 2013 07:09:35 GMT]]></title><description><![CDATA[<p>Wobei mit der Benutzung eines unique_ptr als Member muss auch immer der Kopierkonstruktor und der Zuweisungsoperator implementiert werden, weil der unique_ptr sich ja nicht kopieren lässt. Der Regel der großen 3 wird hier aber insofern widersprochen, als dass kein Destruktor nötig ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2341871</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2341871</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Mon, 29 Jul 2013 07:09:35 GMT</pubDate></item><item><title><![CDATA[Reply to Smart Pointer Verständnisfrage on Mon, 29 Jul 2013 08:40:41 GMT]]></title><description><![CDATA[<p>Skym0sh0 schrieb:</p>
<blockquote>
<p>Wobei mit der Benutzung eines unique_ptr als Member muss auch immer der Kopierkonstruktor und der Zuweisungsoperator implementiert werden, weil der unique_ptr sich ja nicht kopieren lässt. Der Regel der großen 3 wird hier aber insofern widersprochen, als dass kein Destruktor nötig ist.</p>
</blockquote>
<p>Copy-Ctor und Assignment-Op müssen aber nur dann impl. werden, wenn das besitzende Objekt kopierbar sein soll. Wenn nicht, gibts ein Compilation-Error. Im Gegensatz dazu, wenn man mit rohen besitzenden Zeigern arbeitet. Entweder muss das besitzende Objekt dann noncopyable gemacht werden oder eine sinnvolle Impl. für Kopieren/Zuweisen zur Verfügung gestellt werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2341909</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2341909</guid><dc:creator><![CDATA[theta]]></dc:creator><pubDate>Mon, 29 Jul 2013 08:40:41 GMT</pubDate></item><item><title><![CDATA[Reply to Smart Pointer Verständnisfrage on Mon, 29 Jul 2013 08:46:24 GMT]]></title><description><![CDATA[<p>Jop, auf jedenfall weit weit sicherer als rohe Pointer.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2341910</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2341910</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Mon, 29 Jul 2013 08:46:24 GMT</pubDate></item><item><title><![CDATA[Reply to Smart Pointer Verständnisfrage on Mon, 29 Jul 2013 10:42:49 GMT]]></title><description><![CDATA[<p>Skym0sh0 schrieb:</p>
<blockquote>
<p>Wobei mit der Benutzung eines unique_ptr als Member muss auch immer der Kopierkonstruktor und der Zuweisungsoperator implementiert werden, weil der unique_ptr sich ja nicht kopieren lässt. Der Regel der großen 3 wird hier aber insofern widersprochen, als dass kein Destruktor nötig ist.</p>
</blockquote>
<p>Nach meiner Erfahrung ist eher der Normalfall dass man keinen Zuweisungsoperator oder Kopierkonstruktor braucht, weil Objekte die einen <code>unique_ptr</code> enthalten sowieso nicht kopierbar/zuweisbar sein sollen/müssen. Dass der Zuweisungsoperator bzw. Kopierkonstruktor nicht automatisch vom Compiler erzeugt werden können ist dann ein angenehmer Nebeneffekt.</p>
<p>Ein weiterer Fall den man hin und wieder hat ist dass das Objekt auf das man einen Zeiger hält eh immutable ist (z.B. dynamisch initialisierte Lookup-Tables o.ä.). Wenn man dann einen Kopierkonstruktor und/oder Zuweisungsoperator braucht kann man oft <code>unique_ptr</code> einfach gegen <code>shared_ptr</code> tauschen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2341939</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2341939</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Mon, 29 Jul 2013 10:42:49 GMT</pubDate></item><item><title><![CDATA[Reply to Smart Pointer Verständnisfrage on Mon, 29 Jul 2013 10:48:55 GMT]]></title><description><![CDATA[<p>Ja das stimmt.<br />
In dem Fall, an den ich gerade denke, hab ich eine baumartige Datenstruktur gehabt und die internen Zeiger halt als unique_ptr gewählt. Aber die einzelnen Baumknoten mussten ja kopiert werden können, da der Baum kopiert werden konnte.</p>
<p>Nagel mich nicht auf irgendwelche Designschwächen fest, das ist einige Zeit her <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>
]]></description><link>https://www.c-plusplus.net/forum/post/2341944</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2341944</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Mon, 29 Jul 2013 10:48:55 GMT</pubDate></item><item><title><![CDATA[Reply to Smart Pointer Verständnisfrage on Mon, 29 Jul 2013 12:39:09 GMT]]></title><description><![CDATA[<p>spointer schrieb:</p>
<blockquote>
<p>Danke für eure Hilfe, doch eine Frage habe ich noch. In meinem Buch steht, dass wenn ich dynamische Objekte erstelle, soll ich immer shared_ptr verwenden.</p>
<blockquote>
<p>Wenn Sie dynamische Objekte erzeugen, verwenden Sie shared_ptr. Über die Zerstörung<br />
mit delete an einer geeigneten Stelle müssen Sie sich keine Gedanken mehr machen.</p>
</blockquote>
<p>Aber wenn ich innerhalb einer Klasse ein dynamisches privates Objekt erzeugen möchte, was für alle Methoden zugänglich ist und im Destruktor wieder zerstört wird, dann würde ich es im Normalfall so machen wie ich es gelernt habe: Im Konstruktor das Objekt mit <em>new</em> erzeugen und im Destruktor mit <em>delete</em> löschen, so ist es für alle Methoden zugänglich. Hat diese Vorgehensweise irgendwelche Nachteile? Und wenn ich tatsächlich shared_ptr verwenden sollte, wie muss ich es dann machen, dass das Objekt nicht sofort zerstört wird sobald der Konstruktor verlassen wird? Muss ich es irgendwie am Leben erhalten so wie nwp3 es getan hat?</p>
</blockquote>
<p>Wenn Du im Konstruktor ein Objekt anlegen möchtest und im Destruktor wieder frei geben, warum tust Du das überhaupt dynamisch? Reicht nicht einfach das Objekt als Member der Klasse zu deklarieren?</p>
<p>Es gibt natürlich Gründe, warum man es dynamisch machen möchte, aber man sollte sich immer mal überlegen, ob es wirklich dynamisch sein muss. Zu oft wird new/delete verwendet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2341979</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2341979</guid><dc:creator><![CDATA[tntnet]]></dc:creator><pubDate>Mon, 29 Jul 2013 12:39:09 GMT</pubDate></item><item><title><![CDATA[Reply to Smart Pointer Verständnisfrage on Mon, 29 Jul 2013 13:40:22 GMT]]></title><description><![CDATA[<p>Wenn ich bei der Objekterzeugung Parameter mit übergeben muss, bleibt mir ja keine andere Wahl als es mit Zeigern zu lösen. Ist es nicht besser wenn es dann dynamisch ist, oder bevorzugst du sowas...</p>
<pre><code>class Test
{
public:
	Test()
	{
		AnyClass anyClass(&quot;Parameter&quot;);
		anyClassPtr = &amp;anyClass;
	};

private:
	AnyClass *anyClassPtr;
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2342007</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2342007</guid><dc:creator><![CDATA[spointer]]></dc:creator><pubDate>Mon, 29 Jul 2013 13:40:22 GMT</pubDate></item><item><title><![CDATA[Reply to Smart Pointer Verständnisfrage on Mon, 29 Jul 2013 14:11:35 GMT]]></title><description><![CDATA[<p>spointer schrieb:</p>
<blockquote>
<p>Aber wenn ich innerhalb einer Klasse ein dynamisches privates Objekt erzeugen möchte,</p>
</blockquote>
<p>Möchtest du das denn wirklich? tntnet hat da vollkommen Recht.</p>
<pre><code class="language-cpp">class Foo
{
public:
  Foo() : ptr(new int(1729)) {}
  ~Foo() {delete ptr;}
  Foo(Foo const&amp;);
  Foo&amp; operator=(Foo tmp);

private:
  int* ptr;
};
</code></pre>
<p>ist jedenfalls ein Anti-Pattern. Das geht auch einfacher:</p>
<pre><code class="language-cpp">class Foo
{
public:
  Foo() : value(1729) {}

private:
  int value;
};
</code></pre>
<p>und ist natürlich auch nicht auf <code>int</code> , <code>double</code> etc beschränkt.</p>
<p>Eine Indirektion brauchst du hier erst dann, wenn du Polymorphie haben willst, den dynamischen Typ einfach nicht verraten willst (PIMPL) oder das Objekt optional ist bzw später erst erzeugt werden soll. Und dann würde ich da auch <code>unique_ptr</code> für nehmen, weil man damit am wenigstens falsch macht bzgl Speicherlecks, Doppelfreigaben und versehentliches Teilen.</p>
<p>Statt unique_ptr könntest du auch shared_ptr einsetzen. Damit wäre auch recht einfach copy-on-write implementiertbar. Man sollte sich jedenfalls klar darüber sein, was passiert, wenn man schreibend auf so ein &quot;internes&quot; Objekt zugreift, welches von mehreren Foo-Instanzen geteilt wird.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2342011</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2342011</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Mon, 29 Jul 2013 14:11:35 GMT</pubDate></item><item><title><![CDATA[Reply to Smart Pointer Verständnisfrage on Mon, 29 Jul 2013 14:14:02 GMT]]></title><description><![CDATA[<p>spointer schrieb:</p>
<blockquote>
<p>Wenn ich bei der Objekterzeugung Parameter mit übergeben muss, bleibt mir ja keine andere Wahl als es mit Zeigern zu lösen. Ist es nicht besser wenn es dann dynamisch ist, oder bevorzugst du sowas...</p>
<pre><code>class Test
{
public:
	Test()
	{
		AnyClass anyClass(&quot;Parameter&quot;);
		anyClassPtr = &amp;anyClass;
	};

private:
	AnyClass *anyClassPtr;
};
</code></pre>
</blockquote>
<p>Das ist ja mal vollkommener Quatsch <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /></p>
<p>Das &quot;anyClass&quot; objekt im Konstruktor wird zerstört, wenn der Konstruktor fertig ist, aber ein Zeiger wird darauf behalten, ergo: Crash (bzw. undef).</p>
<p>Und wenn eine Klasse keinen Standardkonstruktor hat und dementsprechend Parameter erwartet, dann nutzt man eben Initialisierungslisten. Da gibt es kein Wenn oder Aber, so geht das. Da über Zeiger irgendwas zu maggeln ist das allerletzte, was einem offen steht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2342019</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2342019</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Mon, 29 Jul 2013 14:14:02 GMT</pubDate></item><item><title><![CDATA[Reply to Smart Pointer Verständnisfrage on Mon, 29 Jul 2013 14:21:03 GMT]]></title><description><![CDATA[<p>Dann nehmen wir doch mal das Beispiel und machen es richtig:</p>
<pre><code>class Test
{
public:
    Test()
      : anyClass(&quot;Parameter&quot;)
    {
    }

private:
    AnyClass anyClass;
};
</code></pre>
<p>Das funktioniert und kein rum hantieren mehr mit Zeigern, noch nicht mal smarte. Und nebenbei spart man noch ein paar Taktzyklen, da kein dynamischer Speicher reserviert werden muss.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2342021</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2342021</guid><dc:creator><![CDATA[tntnet]]></dc:creator><pubDate>Mon, 29 Jul 2013 14:21:03 GMT</pubDate></item><item><title><![CDATA[Reply to Smart Pointer Verständnisfrage on Mon, 29 Jul 2013 17:07:04 GMT]]></title><description><![CDATA[<p>Danke! Ich wusste nicht das ich mit dem Elementinitialisierer auch Parameter übergeben kann, dachte immer ich kann damit nur ganz stumpf Attributen Werte zuweisen, dann hat sich das ja erledigt. <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="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2342084</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2342084</guid><dc:creator><![CDATA[spointer]]></dc:creator><pubDate>Mon, 29 Jul 2013 17:07:04 GMT</pubDate></item></channel></rss>