<?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[Grundsatzfrage: Template von Pointer oder Instanz]]></title><description><![CDATA[<p>Hallo,</p>
<p>Ich habe eine Klasse geschrieben fuer Objekte, die ich in einen Vector legen moechte, allerdings ohne einen Default Ctor zu definieren. (Der Vector ist ein QVector, aus der Qt, er sollte sich jedoch wie der STL Vector verhalten; QPair ebenfalls).</p>
<pre><code>class TestElement : public QPair&lt;QString, QString&gt;
{
    mutable qreal dDelay;
    Element* const pElement;

public:
//    TestElement(){ first = &quot;&quot;; second = &quot;&quot;; pElement = 0; dDelay = 0.0; }; 
// Die Initialisierung von pElement hier waere schwachsinnig!

    TestElement(const QString&amp; sz1, const QString&amp; sz2, Element* element) 
        :  dDelay(0.0), pElement(element){first = sz1; second = sz2;};

// Ach ja, und warum kann ich &quot;first&quot; und &quot;second&quot; aus der Basisklasse QPair  
// nicht auch gleich in der Deklarationszeile des ctor initialisieren???
//...
</code></pre>
<p>Ich hatte den Vector zunaechst als</p>
<pre><code>QVector&lt; TestElement &gt;
</code></pre>
<p>angelegt. Darauf bekam ich immer eine Fehlermeldung aus einer internen qvector.h, dass ein Default Ctor fuer &quot;TestElement&quot; fehlt.<br />
Als ich den Vector dann folgendermassen definierte verschwand das Problem:</p>
<pre><code>QVector&lt; TestElement* &gt;
</code></pre>
<p>Woran liegt das, brauch ich fuer Klassen die ich in C++ als Template verwenden will auch immer einen Default Constructor, es sei denn ich lege sie als Pointer-Template an?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/183919/grundsatzfrage-template-von-pointer-oder-instanz</link><generator>RSS for Node</generator><lastBuildDate>Wed, 23 Sep 2026 12:37:33 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/183919.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 10 Jun 2007 14:04:58 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Grundsatzfrage: Template von Pointer oder Instanz on Sun, 10 Jun 2007 14:04:58 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Ich habe eine Klasse geschrieben fuer Objekte, die ich in einen Vector legen moechte, allerdings ohne einen Default Ctor zu definieren. (Der Vector ist ein QVector, aus der Qt, er sollte sich jedoch wie der STL Vector verhalten; QPair ebenfalls).</p>
<pre><code>class TestElement : public QPair&lt;QString, QString&gt;
{
    mutable qreal dDelay;
    Element* const pElement;

public:
//    TestElement(){ first = &quot;&quot;; second = &quot;&quot;; pElement = 0; dDelay = 0.0; }; 
// Die Initialisierung von pElement hier waere schwachsinnig!

    TestElement(const QString&amp; sz1, const QString&amp; sz2, Element* element) 
        :  dDelay(0.0), pElement(element){first = sz1; second = sz2;};

// Ach ja, und warum kann ich &quot;first&quot; und &quot;second&quot; aus der Basisklasse QPair  
// nicht auch gleich in der Deklarationszeile des ctor initialisieren???
//...
</code></pre>
<p>Ich hatte den Vector zunaechst als</p>
<pre><code>QVector&lt; TestElement &gt;
</code></pre>
<p>angelegt. Darauf bekam ich immer eine Fehlermeldung aus einer internen qvector.h, dass ein Default Ctor fuer &quot;TestElement&quot; fehlt.<br />
Als ich den Vector dann folgendermassen definierte verschwand das Problem:</p>
<pre><code>QVector&lt; TestElement* &gt;
</code></pre>
<p>Woran liegt das, brauch ich fuer Klassen die ich in C++ als Template verwenden will auch immer einen Default Constructor, es sei denn ich lege sie als Pointer-Template an?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1302492</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1302492</guid><dc:creator><![CDATA[Fabeltier]]></dc:creator><pubDate>Sun, 10 Jun 2007 14:04:58 GMT</pubDate></item><item><title><![CDATA[Reply to Grundsatzfrage: Template von Pointer oder Instanz on Sun, 10 Jun 2007 14:13:22 GMT]]></title><description><![CDATA[<p>nein. Aber Objekte die in einem stl-container gespeichert werden, müssen einen standard-konstruktor haben.<br />
Sonst könnte zB<br />
vector::resize() nicht funktionieren, der compiler weiß ja nicht, wie er die objekte erstellen soll.</p>
<p>Wenn du jetzt einen pointer da rein machst, dann gehts, weil es einen stadard-konstruktor für pointer gibt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1302500</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1302500</guid><dc:creator><![CDATA[Maxi]]></dc:creator><pubDate>Sun, 10 Jun 2007 14:13:22 GMT</pubDate></item><item><title><![CDATA[Reply to Grundsatzfrage: Template von Pointer oder Instanz on Sun, 10 Jun 2007 14:35:25 GMT]]></title><description><![CDATA[<p>Ich dachte mir soetwas aehnliches schon, war mir aber nicht sicher und wollte das nochmal von wem anders hoeren.</p>
<p>Zu dem anderen Punkt, kann ich mit der Schreibweise:</p>
<pre><code>ctor(): a(A), b(B){};
</code></pre>
<p>denn a und b nicht initialisieren, wenn a und b aus der Basisklasse stammen (obwohl public)?</p>
<p>Danke fuer die Antwort!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1302517</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1302517</guid><dc:creator><![CDATA[Fabeltier]]></dc:creator><pubDate>Sun, 10 Jun 2007 14:35:25 GMT</pubDate></item><item><title><![CDATA[Reply to Grundsatzfrage: Template von Pointer oder Instanz on Sun, 10 Jun 2007 15:47:39 GMT]]></title><description><![CDATA[<p>Fabeltier schrieb:</p>
<blockquote>
<p>Ich dachte mir soetwas aehnliches schon, war mir aber nicht sicher und wollte das nochmal von wem anders hoeren.</p>
<p>Zu dem anderen Punkt, kann ich mit der Schreibweise:</p>
<pre><code>ctor(): a(A), b(B){};
</code></pre>
<p>denn a und b nicht initialisieren, wenn a und b aus der Basisklasse stammen (obwohl public)?</p>
<p>Danke fuer die Antwort!</p>
</blockquote>
<p>Nein, dafür ist der Konsktrutor der Basisklasse da.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1302560</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1302560</guid><dc:creator><![CDATA[lolz]]></dc:creator><pubDate>Sun, 10 Jun 2007 15:47:39 GMT</pubDate></item><item><title><![CDATA[Reply to Grundsatzfrage: Template von Pointer oder Instanz on Sun, 10 Jun 2007 16:20:38 GMT]]></title><description><![CDATA[<p>Ok, danke! <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/1302582</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1302582</guid><dc:creator><![CDATA[Fabeltier]]></dc:creator><pubDate>Sun, 10 Jun 2007 16:20:38 GMT</pubDate></item></channel></rss>