<?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[Doppeldeutigkeit nach mehrfachvererbung]]></title><description><![CDATA[<p>Im original code habe ich zwei klassen die beide die klasse<br />
CDefaultThreadingModel erben.<br />
nun will ich eine dritte klasse erstellen, welche sich von den beiden ersten klassen ableitet, aber habe natürlich das problem, dass die member von CDefaultThreadingModel doppelt existieren</p>
<p>Hier mal eine vereinfachte darstellung meines problems:</p>
<pre><code>#include &lt;iostream&gt;
using namespace std;

class c1{
public:
	int i : 11;
};
class c2{
private:
	int i : 12;
};

class d : public c1, public c2{

};

int main(){

	d d1;
	cout &lt;&lt; d1.i;

	getchar();
	return 0;
}
</code></pre>
<p>PS:<br />
nein ich kann es nicht ohne mehrfachvererbung lösen, das geht echt nicht, weil die erste klasse das singleton design pattern threadsafe implementiert und die zweite klasse einfach eine andere klasse in meiner bibliothek ist, welche ich auch als &quot;nicht-singleton&quot; verwenden will.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/313838/doppeldeutigkeit-nach-mehrfachvererbung</link><generator>RSS for Node</generator><lastBuildDate>Sat, 01 Aug 2026 22:36:27 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/313838.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 11 Feb 2013 21:30:42 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Doppeldeutigkeit nach mehrfachvererbung on Mon, 11 Feb 2013 21:30:42 GMT]]></title><description><![CDATA[<p>Im original code habe ich zwei klassen die beide die klasse<br />
CDefaultThreadingModel erben.<br />
nun will ich eine dritte klasse erstellen, welche sich von den beiden ersten klassen ableitet, aber habe natürlich das problem, dass die member von CDefaultThreadingModel doppelt existieren</p>
<p>Hier mal eine vereinfachte darstellung meines problems:</p>
<pre><code>#include &lt;iostream&gt;
using namespace std;

class c1{
public:
	int i : 11;
};
class c2{
private:
	int i : 12;
};

class d : public c1, public c2{

};

int main(){

	d d1;
	cout &lt;&lt; d1.i;

	getchar();
	return 0;
}
</code></pre>
<p>PS:<br />
nein ich kann es nicht ohne mehrfachvererbung lösen, das geht echt nicht, weil die erste klasse das singleton design pattern threadsafe implementiert und die zweite klasse einfach eine andere klasse in meiner bibliothek ist, welche ich auch als &quot;nicht-singleton&quot; verwenden will.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2298012</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2298012</guid><dc:creator><![CDATA[gamer8o4]]></dc:creator><pubDate>Mon, 11 Feb 2013 21:30:42 GMT</pubDate></item><item><title><![CDATA[Reply to Doppeldeutigkeit nach mehrfachvererbung on Mon, 11 Feb 2013 21:36:00 GMT]]></title><description><![CDATA[<p>Das ist das klassische Beispiel des <a href="http://de.wikipedia.org/wiki/Diamond-Problem" rel="nofollow"><strong>Diamond-Problem</strong></a>s.<br />
Einfach <em>virtuell erben</em>. Das ist im verlinkten Wikipedia-Artikel sogar direkt mit C++ veranschaulicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2298013</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2298013</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Mon, 11 Feb 2013 21:36:00 GMT</pubDate></item><item><title><![CDATA[Reply to Doppeldeutigkeit nach mehrfachvererbung on Mon, 11 Feb 2013 21:36:07 GMT]]></title><description><![CDATA[<p><a href="http://de.wikipedia.org/wiki/Diamond-Problem#Modellierung_in_C.2B.2B" rel="nofollow">http://de.wikipedia.org/wiki/Diamond-Problem#Modellierung_in_C.2B.2B</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2298014</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2298014</guid><dc:creator><![CDATA[Tobiking2]]></dc:creator><pubDate>Mon, 11 Feb 2013 21:36:07 GMT</pubDate></item><item><title><![CDATA[Reply to Doppeldeutigkeit nach mehrfachvererbung on Mon, 11 Feb 2013 21:39:12 GMT]]></title><description><![CDATA[<p>gamer8o4 schrieb:</p>
<blockquote>
<p>nein ich kann es nicht ohne mehrfachvererbung lösen, das geht echt nicht, weil die erste klasse das singleton design pattern threadsafe implementiert und die zweite klasse einfach eine andere klasse in meiner bibliothek ist, welche ich auch als &quot;nicht-singleton&quot; verwenden will.</p>
</blockquote>
<p>Doch, ich glaube schon. Muss man wirklich, um eine bestimmte Theadsicherheit zu haben, von einer Threradsicherheitsklasse erben? Muss man von Singletons erben? Da liegt der Wurm.</p>
<p>Heute mal kannste mit</p>
<pre><code>cout &lt;&lt; d1.c1::i;
</code></pre>
<p>weitermachen. Aber das macht mich nicht glücklich.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2298015</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2298015</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Mon, 11 Feb 2013 21:39:12 GMT</pubDate></item><item><title><![CDATA[Reply to Doppeldeutigkeit nach mehrfachvererbung on Mon, 11 Feb 2013 21:41:32 GMT]]></title><description><![CDATA[<p>Sone &amp; Tobiking2 schrieb:</p>
<blockquote>
<p>Diamond-Problem</p>
</blockquote>
<p>Echt? Nö, eigentlich nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2298016</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2298016</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Mon, 11 Feb 2013 21:41:32 GMT</pubDate></item><item><title><![CDATA[Reply to Doppeldeutigkeit nach mehrfachvererbung on Mon, 11 Feb 2013 21:51:26 GMT]]></title><description><![CDATA[<p>gamer8o4 schrieb:</p>
<blockquote>
<p>nein ich kann es nicht ohne mehrfachvererbung lösen, das geht echt nicht, weil die erste klasse das singleton design pattern threadsafe implementiert und die zweite klasse einfach eine andere klasse in meiner bibliothek ist, welche ich auch als &quot;nicht-singleton&quot; verwenden will.</p>
</blockquote>
<p>Wofür genau brauchst du das Singleton da? Sowas interessiert mich immer, weil ich in über 10 Jahren noch keinen einzigen sinnvollen Anwendungsfall des Singleton Pattern gesehen hab. Vielleicht hab ich ja Glück und du bist tatsächlich der erste, der einen gefunden hat... <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/2298019</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2298019</guid><dc:creator><![CDATA[dot]]></dc:creator><pubDate>Mon, 11 Feb 2013 21:51:26 GMT</pubDate></item><item><title><![CDATA[Reply to Doppeldeutigkeit nach mehrfachvererbung on Mon, 11 Feb 2013 22:19:08 GMT]]></title><description><![CDATA[<p>das diamond ding lese ich mir morgen mal durch und melde mich dann wieder (jetzt ist zu spät)</p>
<p>den singleton brauche ich total oft, die sinnvollste anwendungsmöglichkeit ist bei mir glaube ich ein small-object-allocator, von dem es nicht zwei geben darf, weil es sonst zu speicherfehlern kommt.<br />
als zweites hat z.b mein filesystem einige bestandteile die singletons sind.</p>
<p>ich glaube du brauchst singletons nie, weil du einfach sagst okay, ich nehme einfach das was in die singletonklasse sollte und nehme anstatt der klasse einfach einen namespace und packe da die ganzen sachen rein?<br />
ich mag singletons aber irwie lieber, weil ich dann mehr kontrolle habe wann was erstellt und gelöscht wird und ich kann im destructor alles aufräumen <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/2298029</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2298029</guid><dc:creator><![CDATA[gamer8o4]]></dc:creator><pubDate>Mon, 11 Feb 2013 22:19:08 GMT</pubDate></item><item><title><![CDATA[Reply to Doppeldeutigkeit nach mehrfachvererbung on Mon, 11 Feb 2013 22:30:26 GMT]]></title><description><![CDATA[<p>gamer8o4 schrieb:</p>
<blockquote>
<p>ich glaube du brauchst singletons nie, weil du einfach sagst okay, ich nehme einfach das was in die singletonklasse sollte und nehme anstatt der klasse einfach einen namespace und packe da die ganzen sachen rein?</p>
</blockquote>
<p>Ne, wir tun das ganze in eine Klasse, verspüren aber nicht den Drang, sie gleich zu einem Singleton (und damit zu einer globalen Variable) zu machen <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>Eine Klasse, die nur ein einziges Mal instanziiert wird, rechtfertigt alleine noch kein Singleton! Das wird sehr oft falsch verstanden. Auch scheint mir die Problematik, man könne aus Versehen mehrere Instanzen anlegen, in sehr vielen Situationen inexistent. In gutem Design hat eine Klasse meist einen genau definierten Platz, relativ wenige Objekte sind &quot;einfach so da&quot;. Natürlich gibts immer Ausnahmen, sowas wie Logging oder Speicherverwaltung könnte eventuell dazu gehören.</p>
<p>gamer8o4 schrieb:</p>
<blockquote>
<p>ich mag singletons aber irwie lieber, weil ich dann mehr kontrolle habe wann was erstellt und gelöscht wird und ich kann im destructor alles aufräumen</p>
</blockquote>
<p>Du hast viel weniger Kontrolle mit Singletons. Erstens, da globaler Zugriff möglich ist, kannst du diesen nicht kontrollieren oder limitieren. Man kann von überall her auf die Instanz zugreifen. Dadurch entstehende Seiteneffekte können mühsame Bugs mit sich bringen. Die Modularität geht verloren, Design-Abhängigkeiten innerhalb des Programms nehmen zu, was Wartung wiederum erschwert. Zweitens, du hast keine bzw. sehr eingeschränkte Kontrolle über die Lebenszeit der Instanzen, weil du der statischen Speicherklasse unterworfen bist. Das ist besonders mühsam, wenn du Abhängigkeiten zwischen mehreren Singletons hast. Drittens, du hast keine Threadsicherheit, oder musst dauernd teuer locken und synchrone Zugriffe sicherstellen.</p>
<p>Alles Probleme, die du bei Klassen mit lokalem Zuständigkeitsbereich nicht hast.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2298033</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2298033</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Mon, 11 Feb 2013 22:30:26 GMT</pubDate></item><item><title><![CDATA[Reply to Doppeldeutigkeit nach mehrfachvererbung on Mon, 11 Feb 2013 22:54:04 GMT]]></title><description><![CDATA[<p>gamer8o4 schrieb:</p>
<blockquote>
<p>den singleton brauche ich total oft</p>
</blockquote>
<p>Gut gemeinter Rat: Damit solltest du schnellstmöglich aufhören.</p>
<p>gamer8o4 schrieb:</p>
<blockquote>
<p>[...] die sinnvollste anwendungsmöglichkeit ist bei mir glaube ich ein small-object-allocator, von dem es nicht zwei geben darf, weil es sonst zu speicherfehlern kommt.</p>
</blockquote>
<p>Wieso kommt es sonst zu Speicherfehlern?</p>
<p>gamer8o4 schrieb:</p>
<blockquote>
<p>ich mag singletons aber irwie lieber, weil ich dann mehr kontrolle habe wann was erstellt und gelöscht wird und ich kann im destructor alles aufräumen <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>
</blockquote>
<p>Tatsächlich? Wie genau kontrollierst du denn das bei einem Singleton? Und wieso kannst du nur bei einem Singleton &quot;im Destruktor aufräumen&quot;!?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2298038</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2298038</guid><dc:creator><![CDATA[dot]]></dc:creator><pubDate>Mon, 11 Feb 2013 22:54:04 GMT</pubDate></item><item><title><![CDATA[Reply to Doppeldeutigkeit nach mehrfachvererbung on Mon, 11 Feb 2013 23:09:30 GMT]]></title><description><![CDATA[<p>dot schrieb:</p>
<blockquote>
<p>gamer8o4 schrieb:</p>
<blockquote>
<p>[...] die sinnvollste anwendungsmöglichkeit ist bei mir glaube ich ein small-object-allocator, von dem es nicht zwei geben darf, weil es sonst zu speicherfehlern kommt.</p>
</blockquote>
<p>Wieso kommt es sonst zu Speicherfehlern?</p>
</blockquote>
<p>Ich fange noch früher an: Warum small-object-allocator? Das klingt mir danach, dass da viel zu schnell new verwendet wird, wo im Zweifelsfall ein std::vector viele Instanzen gleichzeitig verwalten könnte. Und der SOA ist nur zur Linderung der Symptome da.</p>
<p>warum sollte ein Logger ein Singleton sein? Selbst wenn es nur einen einzigen Logger geen dürfte, würden mir da spontan mindestens 3 einfachere Designs einfallen, eines davon:</p>
<pre><code>void log(std::string const&amp; message, LogType type);
</code></pre>
<p>Warum überhaupt ein Logger? Weil das coole Kids heute so machen?</p>
<p>Warum</p>
<pre><code>int i : 11;
</code></pre>
<p>anstatt</p>
<pre><code>int i;
</code></pre>
<p>?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2298039</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2298039</guid><dc:creator><![CDATA[otze]]></dc:creator><pubDate>Mon, 11 Feb 2013 23:09:30 GMT</pubDate></item><item><title><![CDATA[Reply to Doppeldeutigkeit nach mehrfachvererbung on Tue, 12 Feb 2013 08:12:45 GMT]]></title><description><![CDATA[<p>Sone schrieb:</p>
<blockquote>
<p>Das ist das klassische Beispiel des <a href="http://de.wikipedia.org/wiki/Diamond-Problem" rel="nofollow"><strong>Diamond-Problem</strong></a>s.</p>
</blockquote>
<p>Wie volkard schon sagte, der Diamond of Death ists nicht. Das wäre er wenn die beiden Oberklassen nochmal von ein- und derselben Basisklasse erben würden und die angepeilte Variable in der obersten Basisklasse definiert wäre.</p>
<p>Mh, was mich mal interessieren würde. Wie erbt man von einem Singleton sinnvoll?<br />
Wenn wir mal hiervon ausgehen.</p>
<pre><code>class SingletonBase
{
	SingletonBase(){}
	SingletonBase(SingletonBase const&amp;); // = delete
	SingletonBase&amp; operator=(SingletonBase); // = delete

public:
	static SingletonBase&amp; getInstance()
	{
		static SingletonBase s;
		return s;
	}
};
</code></pre>
<p>Dann ist ganz schnell klar, dass static + Inheritance nicht harmonieren, sprich vererben geht nicht.</p>
<p>Auf diese folgende Weise schafft man zwar eine Vererbungshierarchy, aber es hat eigentlich nur Nachteile.</p>
<pre><code>class SingletonBase
{
protected:
	SingletonBase(){}

private:
	SingletonBase(SingletonBase const&amp;); // = delete
	SingletonBase&amp; operator=(SingletonBase); // = delete

public:
	static SingletonBase&amp; getInstance()
	{
		static SingletonBase * s = cond ? new SingletonBase : new SingletonDerive; // mal abgesehen von der manuellen Speicherinkontinenz

		return s;
	}

	virtual ~SingletonBase(){}
};

class SingletonDerive : public SingletonBase
{
};
</code></pre>
<p>Wie macht man das in der Praxis?<br />
(Oben die 2 Beispiel sind ohne viel Denken jetzt von mir kurz runtergeschrieben)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2298082</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2298082</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Tue, 12 Feb 2013 08:12:45 GMT</pubDate></item><item><title><![CDATA[Reply to Doppeldeutigkeit nach mehrfachvererbung on Tue, 12 Feb 2013 08:27:31 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>Sone &amp; Tobiking2 schrieb:</p>
<blockquote>
<p>Diamond-Problem</p>
</blockquote>
<p>Echt? Nö, eigentlich nicht.</p>
</blockquote>
<p>Skym0sh0 schrieb:</p>
<blockquote>
<p>Wie volkard schon sagte, der Diamond of Death ists nicht. Das wäre er wenn die beiden Oberklassen nochmal von ein- und derselben Basisklasse erben würden und die angepeilte Variable in der obersten Basisklasse definiert wäre.</p>
</blockquote>
<p>Was versteht Ihr denn anderes als das Diamond-Problem unter der Aussage vom TE?</p>
<p>gamer804 schrieb:</p>
<blockquote>
<p>Im original code habe ich zwei klassen die beide die klasse CDefaultThreadingModel erben.<br />
nun will ich eine dritte klasse erstellen, welche sich von den beiden ersten klassen ableitet, aber habe natürlich das problem, dass die member von CDefaultThreadingModel doppelt existieren</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/2298084</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2298084</guid><dc:creator><![CDATA[Furble Wurble]]></dc:creator><pubDate>Tue, 12 Feb 2013 08:27:31 GMT</pubDate></item><item><title><![CDATA[Reply to Doppeldeutigkeit nach mehrfachvererbung on Tue, 12 Feb 2013 08:44:30 GMT]]></title><description><![CDATA[<p>Das stimmt schon so.</p>
<p>Aber das gegebene Beispiel vom TE spiegelt nicht das Diamond Problem wieder.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2298088</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2298088</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Tue, 12 Feb 2013 08:44:30 GMT</pubDate></item><item><title><![CDATA[Reply to Doppeldeutigkeit nach mehrfachvererbung on Tue, 12 Feb 2013 12:52:00 GMT]]></title><description><![CDATA[<blockquote>
<p>Mh, was mich mal interessieren würde. Wie erbt man von einem Singleton sinnvoll?<br />
Wenn wir mal hiervon ausgehen.</p>
</blockquote>
<p>also so sieht mein grundgerüst aus:<br />
(eine abgewandelte version von dem singleton von andrei alexandrescu)</p>
<pre><code>// CSingleton
	// -&gt; this class is a very variable implementation of the Singleton design pattern descriped by the GoF
	//    &quot;Ensure a class only has one instance, and provide a global point of access to it.&quot;
	template&lt;
		class T,
		template&lt;class&gt; class TLifetime = DELTA_CORE_SINGLETON_LIFETIME_DEFAULT,
		template&lt;class&gt; class TAlloc = DELTA_CORE_ALLOCATOR_DEFAULT,
		template&lt;class,class&gt; class TThreadingModel = DELTA_CORE_THREAD_MODEL_CLASSLEVEL,
		class TMutex = DELTA_CORE_THREAD_MUTEX_DEFAULT
	&gt;
	class CSingleton{
	public:
		typedef T obj_type; // type of the singleton object

		static obj_type&amp; getInstance();

    private:
        // Helpers
        static void createSingleton();
        static void destroySingleton();

        // Protection
        CSingleton();
		CSingleton(const CSingleton&amp;);
		CSingleton&amp; operator=(const CSingleton&amp;);
		~CSingleton();

        // Data
        typedef typename TThreadingModel&lt;T*,TMutex&gt;::volatile_type ptr_instance_type;
        static ptr_instance_type m_instance;
        static bool m_destroyed;
	};
</code></pre>
<pre><code>class c : public CSingleton&lt;c&gt;{

};
</code></pre>
<blockquote>
<p>damit solltest du schnellstmöglich aufhören</p>
</blockquote>
<p>Ich glaube ich sollte echt mal drauf achten, dass ich singleton viel seltener benutze. ich glaube ich sollte anders denken und versuchen umwege zu nehmen.<br />
...ach ich hab ja noch zeit das alles nen bisschen zu üben (bin ja erst 16)</p>
<blockquote>
<p>Wieso kommt es sonst zu Speicherfehlern?</p>
</blockquote>
<p>die klasse ist noch nicht ganz fertig, aber jetzt wo du es sagst... warum eigentlich <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="😃"
    /> ich glaube ich hab da irgentwo einen anderen fehler, ich gucke nochmal nachher nach.</p>
<blockquote>
<p>Das ist das klassische Beispiel des Diamond-Problems.</p>
</blockquote>
<p>scheint genau das zu sein was ich brauche, ich versuche dann mal das in meinen code zu implementieren.</p>
<blockquote>
<blockquote>
<p>ich mag singletons aber irwie lieber, weil ich dann mehr kontrolle habe wann was erstellt und gelöscht wird und ich kann im destructor alles aufräumen</p>
</blockquote>
<p>Tatsächlich? Wie genau kontrollierst du denn das bei einem Singleton? Und wieso kannst du nur bei einem Singleton &quot;im Destruktor aufräumen&quot;!?</p>
</blockquote>
<p>nein kann ich nicht nur bei singletons, das war auf den umweg bezogen alles als globale funktionen und globale variablen zu schreiben und dann hätte ich für die globalen variablen keinen destructor.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2298205</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2298205</guid><dc:creator><![CDATA[gamer8o4]]></dc:creator><pubDate>Tue, 12 Feb 2013 12:52:00 GMT</pubDate></item><item><title><![CDATA[Reply to Doppeldeutigkeit nach mehrfachvererbung on Tue, 12 Feb 2013 12:52:47 GMT]]></title><description><![CDATA[<p>CSchmeiss Cdoch Cdie Tganzen TPraefixe Tweg. CPfui.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2298207</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2298207</guid><dc:creator><![CDATA[Kellerautomat]]></dc:creator><pubDate>Tue, 12 Feb 2013 12:52:47 GMT</pubDate></item><item><title><![CDATA[Reply to Doppeldeutigkeit nach mehrfachvererbung on Tue, 12 Feb 2013 13:17:56 GMT]]></title><description><![CDATA[<pre><code>CSchmeiss Cdoch Cdie Tganzen TPraefixe Tweg. CPfui.
</code></pre>
<p><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="😃"
    /> hab ich mir so angewöhnt, dann weiß man immer direkt was eingabe und was membervariablen sind, man erkennt direkt klassen und datenstrukturen und templateparameter und und und...<br />
ich finde es angenehmer einen solchen code im nachhinein zu ändern also ne <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="😃"
    /> ich lasse das nicht...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2298226</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2298226</guid><dc:creator><![CDATA[gamer8o4]]></dc:creator><pubDate>Tue, 12 Feb 2013 13:17:56 GMT</pubDate></item><item><title><![CDATA[Reply to Doppeldeutigkeit nach mehrfachvererbung on Tue, 12 Feb 2013 14:07:08 GMT]]></title><description><![CDATA[<p>gamer8o4 schrieb:</p>
<blockquote>
<p>hab ich mir so angewöhnt</p>
</blockquote>
<p>UN ist eine der schlimmsten Angewohnheiten von C++-Programmierern.</p>
<p>Siehe <a href="http://www.c-plusplus.net/forum/p1773551#1773551" rel="nofollow">hier</a>.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2298262</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2298262</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Tue, 12 Feb 2013 14:07:08 GMT</pubDate></item><item><title><![CDATA[Reply to Doppeldeutigkeit nach mehrfachvererbung on Tue, 12 Feb 2013 14:13:57 GMT]]></title><description><![CDATA[<pre><code>UN ist eine der schlimmsten Angewohnheiten von C++-Programmierern.
</code></pre>
<p>ungarische notation heißt soweit ich weiß, dass man bei allen variablen den typ abgekürzt davor schreibt.<br />
Ich schreibe ja nur C T m_ p_ das war es und ich finde das hat wenig mit UN zu tun...<br />
mir ist klar, dass es unnötig solche sachen wie das folgende zu schreiben, aber das macht ja auch niemand</p>
<pre><code>const unsigned long long* m_kull_ptr_MyVar = nullptr;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2298267</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2298267</guid><dc:creator><![CDATA[gamer8o4]]></dc:creator><pubDate>Tue, 12 Feb 2013 14:13:57 GMT</pubDate></item><item><title><![CDATA[Reply to Doppeldeutigkeit nach mehrfachvererbung on Tue, 12 Feb 2013 15:07:41 GMT]]></title><description><![CDATA[<p>gamer8o4 schrieb:</p>
<blockquote>
<p>Ich schreibe ja nur C T m_ p_ das war es und ich finde das hat wenig mit UN zu tun...</p>
</blockquote>
<p>Lies mal meinen Link ausführlich.</p>
<p>Falls das nicht reicht, kein Problem. Ich habe auch <a href="http://www.c-plusplus.net/forum/p2005233#2005233" rel="nofollow">einen separaten Post</a> nur den C-Präfixen gewidmet <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/2298302</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2298302</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Tue, 12 Feb 2013 15:07:41 GMT</pubDate></item><item><title><![CDATA[Reply to Doppeldeutigkeit nach mehrfachvererbung on Tue, 12 Feb 2013 15:29:41 GMT]]></title><description><![CDATA[<p>gamer8o4 schrieb:</p>
<blockquote>
<blockquote>
<p>damit solltest du schnellstmöglich aufhören</p>
</blockquote>
<p>Ich glaube ich sollte echt mal drauf achten, dass ich singleton viel seltener benutze. ich glaube ich sollte anders denken und versuchen umwege zu nehmen.<br />
...ach ich hab ja noch zeit das alles nen bisschen zu üben (bin ja erst 16)</p>
</blockquote>
<p>Ähm. Nicht das Vermeiden der Singletons ist der Umweg, sondern das Benutzen. Das klingt gerade, als würde man Dir eine Säge wegnehmen und Du würdest jammern, daß man mit dem Schraubenzieher noch schlechter Blumen gießen kann.</p>
<p>gamer8o4 schrieb:</p>
<blockquote>
<p>nein kann ich nicht nur bei singletons, das war auf den umweg bezogen alles als globale funktionen und globale variablen zu schreiben und dann hätte ich für die globalen variablen keinen destructor.</p>
</blockquote>
<p>Da ist doch schon das Problem. Du verwendest überall globale Variablen. Nochmal: Da ist das Problem. Daß du die globalen Variablen dann als Singletons tarnst, ist keine wirklich tragfähige Lösung.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2298309</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2298309</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Tue, 12 Feb 2013 15:29:41 GMT</pubDate></item><item><title><![CDATA[Reply to Doppeldeutigkeit nach mehrfachvererbung on Thu, 12 Jun 2014 10:55:56 GMT]]></title><description><![CDATA[<p>...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2298313</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2298313</guid><dc:creator><![CDATA[Swordfish]]></dc:creator><pubDate>Thu, 12 Jun 2014 10:55:56 GMT</pubDate></item><item><title><![CDATA[Reply to Doppeldeutigkeit nach mehrfachvererbung on Tue, 12 Feb 2013 16:23:58 GMT]]></title><description><![CDATA[<p>----------------------------------------------------------------------------------------------------------------------------------------------------------------<br />
Regel Nr.1 für die Anwendung von Singletons: Niemals von Singletons ableiten !!!<br />
----------------------------------------------------------------------------------------------------------------------------------------------------------------</p>
<p>Egal was man auch immer für eine Klasse, für was auch immer für einen Anwendungsfall hat.<br />
Die Bedingung nur eine Instanz davon zu erlauben ist kontextabhängig und hat in allen Fällen nichts mit der Klasse selbst zu tun.</p>
<pre><code>class c
{
 // aus bequemlichkeit innerhalb der klasse realisiert
 c* instance() 
 { 
    return singleton&lt;c&gt;::instance(); 
 }
}
</code></pre>
<p>Das Singleton Interface kann auch total außerhalb der Klasse sein.</p>
<pre><code>// freie funktion
c* single_instance()
{ 
  return singleton&lt;c&gt;::instance();
}
</code></pre>
<p>Merke: Siehst du eine Klasse, die von einem Singleton erbt, hat es ein Anfänger programmiert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2298333</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2298333</guid><dc:creator><![CDATA[nurf]]></dc:creator><pubDate>Tue, 12 Feb 2013 16:23:58 GMT</pubDate></item><item><title><![CDATA[Reply to Doppeldeutigkeit nach mehrfachvererbung on Tue, 12 Feb 2013 16:40:42 GMT]]></title><description><![CDATA[<blockquote>
<p>Merke: Siehst du eine Klasse, die von einem Singleton erbt, hat es ein Anfänger programmiert.</p>
</blockquote>
<p>Wenn das stimmen sollte, gibt es auch Anfänger mit mehreren Jahren Berufserfahrung. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2298343</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2298343</guid><dc:creator><![CDATA[anf]]></dc:creator><pubDate>Tue, 12 Feb 2013 16:40:42 GMT</pubDate></item><item><title><![CDATA[Reply to Doppeldeutigkeit nach mehrfachvererbung on Tue, 12 Feb 2013 16:53:07 GMT]]></title><description><![CDATA[<blockquote>
<p>Merke: Siehst du eine Klasse, die von einem Singleton erbt, hat es ein Anfänger programmiert.</p>
</blockquote>
<p>ähäm, wenn du meinst Andrei Alexandrescu wäre ein anfänger... dann gibt es aber sehr wenig profis <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>
<p>Aber deine idee mit dem auslagern ist super. dann kann ich auf die ganzen lösungsvorschläge von diesem diamond-problem ablassen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f4a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--light_bulb"
      title=":bulb:"
      alt="💡"
    /><br />
allerdings hab ich noch eine frage, wenn ich das singleton so verwende wie du es als beispiel angegeben hast kann ich die klasse einfach kopieren?<br />
das heißt ich müsste dann kopierkonstrukoren und operatoren noch private machen.<br />
Naja, ich folge mal diesem ansatz, der scheint mir sinnvoll <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/2298345</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2298345</guid><dc:creator><![CDATA[gamer8o4]]></dc:creator><pubDate>Tue, 12 Feb 2013 16:53:07 GMT</pubDate></item><item><title><![CDATA[Reply to Doppeldeutigkeit nach mehrfachvererbung on Tue, 12 Feb 2013 16:53:38 GMT]]></title><description><![CDATA[<p>Andrei Alexandrescu ist sowieso ein Verräter, da er zu D gewechselt ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2298347</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2298347</guid><dc:creator><![CDATA[pfffffff]]></dc:creator><pubDate>Tue, 12 Feb 2013 16:53:38 GMT</pubDate></item><item><title><![CDATA[Reply to Doppeldeutigkeit nach mehrfachvererbung on Tue, 12 Feb 2013 16:56:22 GMT]]></title><description><![CDATA[<blockquote>
<p>Andrei Alexandrescu ist sowieso ein Verräter, da er zu D gewechselt ist.</p>
</blockquote>
<p><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="😃"
    /><br />
er ist nicht nur dazu gewechselt, er entwickelt die sprache mit.<br />
Das heißt aber noch lange nicht, das er C++ nicht drauf hat, ich finde seine bücher genial.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2298349</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2298349</guid><dc:creator><![CDATA[gamer8o4]]></dc:creator><pubDate>Tue, 12 Feb 2013 16:56:22 GMT</pubDate></item></channel></rss>