<?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[Funktion nur einmal deklarieren]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe eine generelle Frage:<br />
Ich habe eine Klasse, die eine Verbindung zum Arduino herstellt. Jetzt würde ich diese Klasse allerdings gerne in anderen Klassen neu instanzieren, was allerdings nicht funktioniert (ist ja logisch), da man die Connection nur einmal aufrufen kann.</p>
<p>Kann ich diese Funktion also irgendwie so deklarieren, dass diese nur einmal (beim ersten Instanzieren) aufgerufen wird und bei mehrmaligen einfach aufbestehende Variablen etc. zugegriffen wird? Ist dies übehaupt sinnvoll?</p>
<p>Ich könnte die Klasse natürlich auch einmalig instanzieren und die Instanz an die Klasse über geben. Muss man nur wissen, was schöner ist <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>
<p>Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/331425/funktion-nur-einmal-deklarieren</link><generator>RSS for Node</generator><lastBuildDate>Fri, 01 May 2026 15:55:31 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/331425.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 28 Feb 2015 00:02:02 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Funktion nur einmal deklarieren on Sat, 28 Feb 2015 00:24:04 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe eine generelle Frage:<br />
Ich habe eine Klasse, die eine Verbindung zum Arduino herstellt. Jetzt würde ich diese Klasse allerdings gerne in anderen Klassen neu instanzieren, was allerdings nicht funktioniert (ist ja logisch), da man die Connection nur einmal aufrufen kann.</p>
<p>Kann ich diese Funktion also irgendwie so deklarieren, dass diese nur einmal (beim ersten Instanzieren) aufgerufen wird und bei mehrmaligen einfach aufbestehende Variablen etc. zugegriffen wird? Ist dies übehaupt sinnvoll?</p>
<p>Ich könnte die Klasse natürlich auch einmalig instanzieren und die Instanz an die Klasse über geben. Muss man nur wissen, was schöner ist <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>
<p>Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2444614</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2444614</guid><dc:creator><![CDATA[Waishon]]></dc:creator><pubDate>Sat, 28 Feb 2015 00:24:04 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion nur einmal deklarieren on Sat, 28 Feb 2015 00:34:14 GMT]]></title><description><![CDATA[<p>Wenn es nur eine Verbindung gibt, dann sollte dein Programm das auch widerspiegeln. Wenn es global nur eine Verbindung geben <em>kann</em> (eher unwahrscheinlich, da vermutlich mehrere Geräte angeschlossen werden könnten?), dann wäre das sogenannte Singleton-Pattern eine Möglichkeit, dieses umzusetzen. Wenn es für ein bestimmtest Gerät nur eine Verbindung geben kann, dann würde ich das so machen, wie es beispielsweise die fstreams für Dateien machen. Also Kopieren einer Verbindung verbieten; stattdessen Verbindungen per Referenz hin und her reichen. Wenn jemand versucht eine zweite Verbindung zu einem Gerät herzustellen, scheitert dies eben und diese Instanz kann nicht genutzt werden. Ein Analog dazu wären die fstreams: Es kann viele fstreams geben, aber versucht man eine bereits anderswo geöffnete Datei zu öffnen, wird das Öffnen (zumindest auf manchen Systemen) fehlschlagen.</p>
<blockquote>
<p>Kann ich diese Funktion also irgendwie so deklarieren, dass diese nur einmal (beim ersten Instanzieren) aufgerufen wird und bei mehrmaligen einfach aufbestehende Variablen etc. zugegriffen wird? Ist dies übehaupt sinnvoll?</p>
</blockquote>
<p>Das wäre das Singleton.</p>
<blockquote>
<p>Ich könnte die Klasse natürlich auch einmalig instanzieren und die Instanz an die Klasse über geben. Muss man nur wissen, was schöner ist <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>
</blockquote>
<p>Das wäre, was ich beschrieben habe.</p>
<p>Was davon passender ist, kommt drauf an, welche Eigenschaften solch eine Verbindung genau hat und welches Modell dies besser beschreibt. Möglich sind aber beide.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2444616</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2444616</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sat, 28 Feb 2015 00:34:14 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion nur einmal deklarieren on Sat, 28 Feb 2015 01:17:46 GMT]]></title><description><![CDATA[<p>Möglich sind beide, korrekt.<br />
&quot;All things being equal&quot; würde ich aber empfehlen die &quot;rumreichen&quot; Variante zu verwenden.<br />
Singletons sind etwas was man sich gar nicht erst angewöhnen sollte.</p>
<p>Der Einsatz von Singletons, wo es nicht angebracht ist, führt so oft zu so vielen Problemen im nachhinein... böse böse böse.</p>
<p>Etwas nicht als Singleton zu implementieren kann zwar manchmal ein wenig mehr Arbeit sein, aber dafür kann es später nicht zu solchen Problemen führen. Wenn man nie mehr als ein Objekt braucht hat man halt einfach ein Programm das mehr als ein Objekt erlauben würde, aber nie mehr als eins braucht. Keine Tragik. Umgekehrt: grosse Tragik.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2444622</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2444622</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Sat, 28 Feb 2015 01:17:46 GMT</pubDate></item></channel></rss>