<?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[Speicher wird vom Konstruktor nicht freigeben, soll er auch nicht, manchmal aber schon ...]]></title><description><![CDATA[<p>Ich habe einen schweren Speicherfehler in meiner Klasse. Diese hat (unter anderem) einen char-Zeiger (cahr*) als privates Element, der Speicher auf dem Heap braucht. Sie soll als Fehlerssammlung dienen und kann aus einem übergebenen Argument an den Konstruktor bereits ein neues CExample-Objekt (der Name der Klasse) kreieren. Aber zuerst die Klasse:</p>
<pre><code class="language-cpp">//////////////////////////////////////////////////
// Diese Klasse definiert nur das nötigste, also bitte auf Zeiger- oder
// Referenzenübergabehinweise usw. verzichten.
//////////////////////////////////////////////////

class CExample
{
public:
    CExample(char* cstr); // Implementierung nicht wichtig, Hauptsache man weiss, wie aus einem char* ein CExample wird. cstr wird allerdings nicht gelöscht (später noch wichtig)

    char* operator+(CExample TheExample); // Falls mehrere Fehlermeldungen angezeigt werden müssen, kann man diese verknüpfen, um sich mehrere Anzeigen zu sparen.
    // Gibt einem Adressblock auf dem Heap zurück, in dem die fertige Fehlermelgun steht.

    CExample operator=(CExample TheExample); // Kann auch ein char-Zeiger auf Speicher im Heap reservieren, darf diesen aber nicht freigeben.

    //////////////////////////////////////////////////
    // Der Benutzer soll auch in der Lage sein, seine Fehlermeldungen
    // in einen char* umzuwandeln. Dazu der operator char*,
    // der die Adresse eines nulterminierten Strings im Heap 
    // zurückgibt. Hier liget auch mein Problems: um möglichst
    // Kompatibel zu char* zu sein, gibt dieser Operator keinen Verweis
    // auf meinen Fehlermeldungstext und auch kein neues Objekt,
    // sondern einen komplett neuen Text mit neuem Speicher auf dem
    // Heap zurück (genau wie der Additionsopertaotr). Wenn aber
    // in diesem Operator Speicher auf dem Heap reserviert wird,
    // wird dieser weder im operator= noch im Konstruktor freigegeben.
    // Kurz: String auf dem Heap, wird in ein CExample-Objekt verwandelt,
    // Verweis geht verloren, der Speicher bleibt jedoch bestehen.
    //////////////////////////////////////////////////

    operator char*();    
private:
    char* m_ErrorMessage; // Enthält die Fehlermeldung an sich
    // (...) Und noch so einige Elemente, alle hier unwichtig
}
</code></pre>
<p>Zur Erläuterung: Die Klasse CExample definiert einen Konstruktor, mit dem man einen char* in ein CExample-Objekt umwandeln kann, und einen operator char*, mit dem man dieses Objekt (eigentlich die gespeicherte Fehlermeldung) wieder in einen char* verwandeln kann. Zusätzlich ein operator+, der die Fehlermeldungen verbinden kann, und ein Zuweisungs-operator=.</p>
<p>Mein Problem:</p>
<pre><code class="language-cpp">int main()
{
    CExample Example=&quot;Beispiel&quot;; // Example wird leer konstruiert, &quot;Beispiel&quot; wird in ein CExample-Objekt verwandelt und Example zugewiesen.

    char* String=Example; // Hier wird neuer Speicher reserviert, die Fehlermeldung reinkopiert und anschliessend an String zugewiesen.

    // Bis hier geht alles gut. &quot;Beispiel&quot; ist auf dem Stack und wird automatisch gelöscht. String hat einen eigenständigen Wert. Jetzt aber kommt der GAU ...

    CExample SecondExample=Example+&quot;Beispiel&quot;; // SecondExamole wird leer konstruiert. Example und &quot;Beispiel&quot; werden miteinander verknüpft, dazu wird zuerst aus
    // dem String ein CExample, dann wird der zusammengefügten Fehlermeldung als char* Speicher im Heap zugewiesen (um eben den Typ char* 
    // zu unterstützen). Speicher ist reserviert, wird aber weder im Konstrutor (der aufgerufen wird, weil aus dem Speicher ein CExample-Objekt werden soll) 
    // noch im Zuweisungsoperator freigegeben, da der Benutzer selbst bestimmen soll, wann die Fehlermeldung gelöscht sein soll.
}
</code></pre>
<p>Muss ich dem Konstruktor anhand einer bool-Variable sagen, wann er einen Parameter zu löschen hat, oder geht das auch anders? Ich bedanke mich schon mal im Vorraus.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/247764/speicher-wird-vom-konstruktor-nicht-freigeben-soll-er-auch-nicht-manchmal-aber-schon</link><generator>RSS for Node</generator><lastBuildDate>Thu, 17 Sep 2026 11:59:10 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/247764.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 15 Aug 2009 08:06:09 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Speicher wird vom Konstruktor nicht freigeben, soll er auch nicht, manchmal aber schon ... on Sat, 15 Aug 2009 08:06:09 GMT]]></title><description><![CDATA[<p>Ich habe einen schweren Speicherfehler in meiner Klasse. Diese hat (unter anderem) einen char-Zeiger (cahr*) als privates Element, der Speicher auf dem Heap braucht. Sie soll als Fehlerssammlung dienen und kann aus einem übergebenen Argument an den Konstruktor bereits ein neues CExample-Objekt (der Name der Klasse) kreieren. Aber zuerst die Klasse:</p>
<pre><code class="language-cpp">//////////////////////////////////////////////////
// Diese Klasse definiert nur das nötigste, also bitte auf Zeiger- oder
// Referenzenübergabehinweise usw. verzichten.
//////////////////////////////////////////////////

class CExample
{
public:
    CExample(char* cstr); // Implementierung nicht wichtig, Hauptsache man weiss, wie aus einem char* ein CExample wird. cstr wird allerdings nicht gelöscht (später noch wichtig)

    char* operator+(CExample TheExample); // Falls mehrere Fehlermeldungen angezeigt werden müssen, kann man diese verknüpfen, um sich mehrere Anzeigen zu sparen.
    // Gibt einem Adressblock auf dem Heap zurück, in dem die fertige Fehlermelgun steht.

    CExample operator=(CExample TheExample); // Kann auch ein char-Zeiger auf Speicher im Heap reservieren, darf diesen aber nicht freigeben.

    //////////////////////////////////////////////////
    // Der Benutzer soll auch in der Lage sein, seine Fehlermeldungen
    // in einen char* umzuwandeln. Dazu der operator char*,
    // der die Adresse eines nulterminierten Strings im Heap 
    // zurückgibt. Hier liget auch mein Problems: um möglichst
    // Kompatibel zu char* zu sein, gibt dieser Operator keinen Verweis
    // auf meinen Fehlermeldungstext und auch kein neues Objekt,
    // sondern einen komplett neuen Text mit neuem Speicher auf dem
    // Heap zurück (genau wie der Additionsopertaotr). Wenn aber
    // in diesem Operator Speicher auf dem Heap reserviert wird,
    // wird dieser weder im operator= noch im Konstruktor freigegeben.
    // Kurz: String auf dem Heap, wird in ein CExample-Objekt verwandelt,
    // Verweis geht verloren, der Speicher bleibt jedoch bestehen.
    //////////////////////////////////////////////////

    operator char*();    
private:
    char* m_ErrorMessage; // Enthält die Fehlermeldung an sich
    // (...) Und noch so einige Elemente, alle hier unwichtig
}
</code></pre>
<p>Zur Erläuterung: Die Klasse CExample definiert einen Konstruktor, mit dem man einen char* in ein CExample-Objekt umwandeln kann, und einen operator char*, mit dem man dieses Objekt (eigentlich die gespeicherte Fehlermeldung) wieder in einen char* verwandeln kann. Zusätzlich ein operator+, der die Fehlermeldungen verbinden kann, und ein Zuweisungs-operator=.</p>
<p>Mein Problem:</p>
<pre><code class="language-cpp">int main()
{
    CExample Example=&quot;Beispiel&quot;; // Example wird leer konstruiert, &quot;Beispiel&quot; wird in ein CExample-Objekt verwandelt und Example zugewiesen.

    char* String=Example; // Hier wird neuer Speicher reserviert, die Fehlermeldung reinkopiert und anschliessend an String zugewiesen.

    // Bis hier geht alles gut. &quot;Beispiel&quot; ist auf dem Stack und wird automatisch gelöscht. String hat einen eigenständigen Wert. Jetzt aber kommt der GAU ...

    CExample SecondExample=Example+&quot;Beispiel&quot;; // SecondExamole wird leer konstruiert. Example und &quot;Beispiel&quot; werden miteinander verknüpft, dazu wird zuerst aus
    // dem String ein CExample, dann wird der zusammengefügten Fehlermeldung als char* Speicher im Heap zugewiesen (um eben den Typ char* 
    // zu unterstützen). Speicher ist reserviert, wird aber weder im Konstrutor (der aufgerufen wird, weil aus dem Speicher ein CExample-Objekt werden soll) 
    // noch im Zuweisungsoperator freigegeben, da der Benutzer selbst bestimmen soll, wann die Fehlermeldung gelöscht sein soll.
}
</code></pre>
<p>Muss ich dem Konstruktor anhand einer bool-Variable sagen, wann er einen Parameter zu löschen hat, oder geht das auch anders? Ich bedanke mich schon mal im Vorraus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1761189</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1761189</guid><dc:creator><![CDATA[Der aus dem Westen ...]]></dc:creator><pubDate>Sat, 15 Aug 2009 08:06:09 GMT</pubDate></item><item><title><![CDATA[Reply to Speicher wird vom Konstruktor nicht freigeben, soll er auch nicht, manchmal aber schon ... on Sat, 15 Aug 2009 08:45:25 GMT]]></title><description><![CDATA[<p>Der aus dem Westen ... schrieb:</p>
<blockquote>
<p>Muss ich dem Konstruktor anhand einer bool-Variable sagen, wann er einen Parameter zu löschen hat, oder geht das auch anders?</p>
</blockquote>
<p>Dein Konstruktor hat doch keine Ahnung wo der Speicher hinter dem übergebenen <code>char*</code> herkommt. Er kann mit <code>new[]</code> angelegt worden sein, mit <code>malloc</code> oder von einem separaten Speichermanager oder gar Stackspeicher sein. Deshalb wäre es am besten, wenn du dich an den einfachen Grundsatz hältst: wer den Speicher reserviert, ist auch alleine für die Freigabe zuständig.<br />
Am einfachsten kannst du das mit sauberer Kapselung und RAII sicherstellen: ein (String-)Objekt reserviert Speicher im Konstruktor und gibt ihn im Destruktor wieder frei.</p>
<p>Und weil C++ so toll ist, gibt es dafür auch schon eine fertige Klasse. Die nennt sich <code>std::string</code> und nimmt dir all dieses Rumgehampel mit Zeigern, <code>new</code> und <code>delete</code> ab. Das macht dein Programm einfacher, sauberer und vermindert Fehlerquellen, was allgemein als erstrebenswert angesehen wird.</p>
<p>Ebenso würde const-correctness in diesem Fall einiges klarer machen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1761199</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1761199</guid><dc:creator><![CDATA[Registrierter Troll]]></dc:creator><pubDate>Sat, 15 Aug 2009 08:45:25 GMT</pubDate></item><item><title><![CDATA[Reply to Speicher wird vom Konstruktor nicht freigeben, soll er auch nicht, manchmal aber schon ... on Sat, 15 Aug 2009 09:01:00 GMT]]></title><description><![CDATA[<p>Mit der <code>std::string</code> mag ich nicht so gerne programmieren. Damit bleibt die Individualität des Programms irgendwie auf der Strecke, was ich überhaupt nicht gebrauchen kann (später im Code kommt es nämlich echt Dicke, was die Handhabung angeht, da brauche ich volle Kontrolle auf meine Strings).</p>
<p>Und da du meinst, dass das so nicht geht, bleibt mir wohl nichts anderes übrig, als einen privaten Konstruktor mit zusätzlichem Flagparameter zu deklarieren. Na, trotzdem danke.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1761205</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1761205</guid><dc:creator><![CDATA[Der aus dem Westen ...]]></dc:creator><pubDate>Sat, 15 Aug 2009 09:01:00 GMT</pubDate></item><item><title><![CDATA[Reply to Speicher wird vom Konstruktor nicht freigeben, soll er auch nicht, manchmal aber schon ... on Sat, 15 Aug 2009 09:15:21 GMT]]></title><description><![CDATA[<p>Der aus dem Westen ... schrieb:</p>
<blockquote>
<p>Mit der <code>std::string</code> mag ich nicht so gerne programmieren. Damit bleibt die Individualität des Programms irgendwie auf der Strecke, was ich überhaupt nicht gebrauchen kann (später im Code kommt es nämlich echt Dicke, was die Handhabung angeht, da brauche ich volle Kontrolle auf meine Strings).</p>
</blockquote>
<p>Was musst du denn machen, was <code>std::string</code> nicht kann?<br />
Ehrlich gesagt halte ich (nach dem bisschen Info was ich habe) deine Fähigkeiten nicht annähernd für so gut, dass dein Code <code>std::string</code> in irgendeiner Disziplin schlagen könnte. Weder von der Performance her, oder dem Design oder der Fehlerfreiheit.<br />
Statt dessen wirst du mehr Zeit mit Debugging verbringen als du konstruktive Arbeit leistest.</p>
<p>Da du aber vermutlich trotzdem glauben wirst, es besser zu wissen und auf deinem Standpunkt beharren wirst, würde ich dir zumindest als Minimallösung empfehlen, eine eigene Stringklasse mit vernünftiger Kapselung zu implementieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1761208</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1761208</guid><dc:creator><![CDATA[Registrierter Troll]]></dc:creator><pubDate>Sat, 15 Aug 2009 09:15:21 GMT</pubDate></item><item><title><![CDATA[Reply to Speicher wird vom Konstruktor nicht freigeben, soll er auch nicht, manchmal aber schon ... on Sat, 15 Aug 2009 09:25:28 GMT]]></title><description><![CDATA[<p>Was ist schon dabei? Meiner Meinung nach ist <code>std::string</code> keine &quot;wichtige Klasse&quot; (wie die Streams oder die Container), da man sie selbst programmieren kann. Und was man selbst programmieren kann, kann einem individuelle Vorteile einbringen.</p>
<p>Aber gut. Wenn du meinst, ich sollte <code>string</code> s verwenden, werde ich deinen Vorschlag ausprobieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1761211</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1761211</guid><dc:creator><![CDATA[Der aus dem Westen ...]]></dc:creator><pubDate>Sat, 15 Aug 2009 09:25:28 GMT</pubDate></item><item><title><![CDATA[Reply to Speicher wird vom Konstruktor nicht freigeben, soll er auch nicht, manchmal aber schon ... on Sat, 15 Aug 2009 09:31:39 GMT]]></title><description><![CDATA[<p>Der aus dem Westen ... schrieb:</p>
<blockquote>
<p>Was ist schon dabei? Meiner Meinung nach ist <code>std::string</code> keine &quot;wichtige Klasse&quot; (wie die Streams oder die Container), da man sie selbst programmieren kann. Und was man selbst programmieren kann, kann einem individuelle Vorteile einbringen.</p>
</blockquote>
<p>Theoretisch kann man alles selbst programmieren... <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/1761217</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1761217</guid><dc:creator><![CDATA[David_pb]]></dc:creator><pubDate>Sat, 15 Aug 2009 09:31:39 GMT</pubDate></item><item><title><![CDATA[Reply to Speicher wird vom Konstruktor nicht freigeben, soll er auch nicht, manchmal aber schon ... on Sat, 15 Aug 2009 09:33:13 GMT]]></title><description><![CDATA[<p>Der aus dem Westen ... schrieb:</p>
<blockquote>
<p>Was ist schon dabei? Meiner Meinung nach ist <code>std::string</code> keine &quot;wichtige Klasse&quot; (wie die Streams oder die Container), da man sie selbst programmieren kann.</p>
</blockquote>
<p>Wenn man unbedingt will, kann man <em>alles</em> selber programmieren. Ich verstehe auch nicht, warum da Streams und die anderen Containerklassen einen Unterschied zu std::string machen sollten. Das ist übrigens auch nur ein Container für Zeichenketten.</p>
<blockquote>
<p>Und was man selbst programmieren kann, kann einem individuelle Vorteile einbringen.</p>
</blockquote>
<p>Klar. Wenn du gute Gründe hast, warum nicht. Die Realität sieht aber so aus, dass du hier um Hilfe fragst, weil du Probleme mit der Speicherverwaltung hast, die du alleine nicht gelöst kriegst. Das hört sich nicht gerade nach einem Vorteil an.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1761220</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1761220</guid><dc:creator><![CDATA[Registrierter Troll]]></dc:creator><pubDate>Sat, 15 Aug 2009 09:33:13 GMT</pubDate></item><item><title><![CDATA[Reply to Speicher wird vom Konstruktor nicht freigeben, soll er auch nicht, manchmal aber schon ... on Sat, 15 Aug 2009 09:33:15 GMT]]></title><description><![CDATA[<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_down"
      title=":-1:"
      alt="👎"
    /></p>
<p>Wie kann man Dir nur helfen, wenn Du Dich dagegen querstellst Dein Design zu überdenken?</p>
<p>Ohne das, was Du damit anstellen willst, richtig verstanden zu haben, kann ich trotzdem behaupten, dass die Qualität des Designs sehr niedrig ist.</p>
<ul>
<li>Du hast RAII nicht verstanden</li>
<li>Du ignorierst Warnungen des Compilers. Die Konvertierung eines Zeichenliterals in char* ist veraltet und man sollte darauf <em>nicht</em> setzen.</li>
<li>Du hast &quot;copy initialization&quot; nicht verstanden. Das geht aus einem Kommentar hervor.</li>
<li>Falls CExample irgendwie verantwortlich für die &quot;Verwaltung&quot; der Zeichenkette sein soll, fehlen selbstdefinierter Copy-Constructor und Destruktor.</li>
<li>Dein operator+ nimmt die Parameter als Wert entgegen und nicht per Referenz. Dir ist hoffentlich klar, dass &quot;TheExample&quot; logisch gesehen eine Kopie des Arguments ist, ja?</li>
</ul>
<p>Auch auf den 2. und 3. Blick sieht Deine Klasse nach einem -- bei allem Respekt -- sehr schlechten std::string Ersatz aus.</p>
<p>Als C++ Anfänger könntest Du Dir solche Kritiken ruhig mal näher zu Herzen nehmen.</p>
<p>Gruß,<br />
SP</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1761221</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1761221</guid><dc:creator><![CDATA[Sebastian Pizer]]></dc:creator><pubDate>Sat, 15 Aug 2009 09:33:15 GMT</pubDate></item><item><title><![CDATA[Reply to Speicher wird vom Konstruktor nicht freigeben, soll er auch nicht, manchmal aber schon ... on Sat, 15 Aug 2009 09:41:56 GMT]]></title><description><![CDATA[<p>Nur zur Information, ich habe diese Klasse soweit abgespeckt, wie es ging. Natürlich kommen noch Kopierkonstruktor, Destruktor, Referenzen (Zeiger in Objekten müssen im Kopierkonstruktor neuen Speicher bekommen, da sonst bei der Kopie der Destruktor aufgerufen wird und sowohl Original- als auch Kopiezeiger hinüber sind) und logische Feinheiten hinzu. Die Klasse ist in ihren jetzigen Zustand nicht mal 100-mal so klein wie im Original. Also keine Sorge, ich bin kein blutiger Anfänger, für den du mich hälst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1761229</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1761229</guid><dc:creator><![CDATA[Der aus dem Westen ...]]></dc:creator><pubDate>Sat, 15 Aug 2009 09:41:56 GMT</pubDate></item><item><title><![CDATA[Reply to Speicher wird vom Konstruktor nicht freigeben, soll er auch nicht, manchmal aber schon ... on Sat, 15 Aug 2009 09:45:55 GMT]]></title><description><![CDATA[<p>Kleiner Edit: Ich ignoriere NIE Warnungen des Compilers. Ich bin sogar so verrückt, diesen auf Warnstufe 4 zu stellen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1761232</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1761232</guid><dc:creator><![CDATA[Der aus dem Westen ...]]></dc:creator><pubDate>Sat, 15 Aug 2009 09:45:55 GMT</pubDate></item><item><title><![CDATA[Reply to Speicher wird vom Konstruktor nicht freigeben, soll er auch nicht, manchmal aber schon ... on Sat, 15 Aug 2009 10:12:43 GMT]]></title><description><![CDATA[<p>Der aus dem Westen ... schrieb:</p>
<blockquote>
<p>Nur zur Information, ich habe diese Klasse soweit abgespeckt, wie es ging.</p>
</blockquote>
<p>Zuviel des Guten.</p>
<p>Der aus dem Westen ... schrieb:</p>
<blockquote>
<p>Die Klasse ist in ihren jetzigen Zustand nicht mal 100-mal so klein wie im Original.</p>
</blockquote>
<p>Bedauerlich.</p>
<p>Der aus dem Westen ... schrieb:</p>
<blockquote>
<p>Also keine Sorge, ich bin kein blutiger Anfänger, für den du mich hälst.</p>
</blockquote>
<p>Ich halte es für wahrscheinlich, dass Du nur glaubst, kein Anfänger zu sein.</p>
<p>Der aus dem Westen ... schrieb:</p>
<blockquote>
<p>Ich ignoriere NIE Warnungen des Compilers. Ich bin sogar so verrückt, diesen auf Warnstufe 4 zu stellen.</p>
</blockquote>
<p>Dein Compiler generiert also keine Warnung, wenn Du so etwas schreibst</p>
<pre><code class="language-cpp">char      * schlecht = &quot;Ich bin ein Literal&quot;;
  char const* gut      = &quot;Ich auch&quot;;
</code></pre>
<p>?</p>
<p>Ich habe gar keine Lust mich mit jemandem zu streiten hier. Aber bevor Du Dich in ein Design verrennst, welches viele als schlecht einstufen würden, sag ich eben meine Meinung.</p>
<p>Wer ist &quot;Anfänger&quot;? Nur, um mal ein paar Beispiele zu nennen: Leute, die glauben, bei <code>string s = &quot;hello&quot;;</code> würde der <code>string::operator=</code> aufgerufen, sind für mich Anfänger. Leute, die einen + operator mit <code>char* foo::operator+(char*)</code> deklarieren und in der Definition neu angeforderten Speicher zurückgeben, sind für mich Anfänger und Beweis dafür, dass RAII nicht verstanden worden ist.</p>
<p>Gruß,<br />
SP</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1761241</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1761241</guid><dc:creator><![CDATA[Sebastian Pizer]]></dc:creator><pubDate>Sat, 15 Aug 2009 10:12:43 GMT</pubDate></item></channel></rss>