<?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[Segement Fault]]></title><description><![CDATA[<p>Am Ende meines Konsolen-Programmes (es läuft soweit normal durch) kommt eine Windows-Fehlermeldung:</p>
<p>&quot;Die Anweisung in 0xblablabla verweist auf Speicher in 0xblablabla. Der Vorgang konnte nicht auf dem Speicher durchgeführt werden.&quot;</p>
<p>Führe ich das Programm im Debug-Modus aus, so kommt am Ende die Meldung:</p>
<p>&quot;An Access Violation (Segmentation Fault) raised in your Program.&quot;</p>
<p>Ich weiß, dass hier keiner hellsehen kann und mir den Fehler sagen kann. Mir geht's darum, mit welcher ART von Fehler diese Meldungen zusammenhängen können.</p>
<p>Ich gehe davon aus, dass wohl irgendein Zeiger auf eine unerlaubte Adresse zeigt?</p>
<p>Mein Programm verwendet einige Zeiger; obwohl ich mich eigentlich immer bemüht habe, alles aufzuräumen: Klassen mit Zeiger haben entsprechende Destruktoren, kein new ohne delete. Dass ich trotzdem irgendwo was falsch gemacht habe, kann ich natürlich nicht aussschließen (ich gehe sogar davon aus...)</p>
<p>Aber die Frage ist: Warum läuft das Programm scheinbar erstmal normal durch, warum kracht es erst beim Beenden? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/156553/segement-fault</link><generator>RSS for Node</generator><lastBuildDate>Tue, 08 Sep 2026 22:10:24 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/156553.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 17 Aug 2006 18:14:15 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Segement Fault on Thu, 17 Aug 2006 18:14:15 GMT]]></title><description><![CDATA[<p>Am Ende meines Konsolen-Programmes (es läuft soweit normal durch) kommt eine Windows-Fehlermeldung:</p>
<p>&quot;Die Anweisung in 0xblablabla verweist auf Speicher in 0xblablabla. Der Vorgang konnte nicht auf dem Speicher durchgeführt werden.&quot;</p>
<p>Führe ich das Programm im Debug-Modus aus, so kommt am Ende die Meldung:</p>
<p>&quot;An Access Violation (Segmentation Fault) raised in your Program.&quot;</p>
<p>Ich weiß, dass hier keiner hellsehen kann und mir den Fehler sagen kann. Mir geht's darum, mit welcher ART von Fehler diese Meldungen zusammenhängen können.</p>
<p>Ich gehe davon aus, dass wohl irgendein Zeiger auf eine unerlaubte Adresse zeigt?</p>
<p>Mein Programm verwendet einige Zeiger; obwohl ich mich eigentlich immer bemüht habe, alles aufzuräumen: Klassen mit Zeiger haben entsprechende Destruktoren, kein new ohne delete. Dass ich trotzdem irgendwo was falsch gemacht habe, kann ich natürlich nicht aussschließen (ich gehe sogar davon aus...)</p>
<p>Aber die Frage ist: Warum läuft das Programm scheinbar erstmal normal durch, warum kracht es erst beim Beenden? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1119377</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1119377</guid><dc:creator><![CDATA[sly]]></dc:creator><pubDate>Thu, 17 Aug 2006 18:14:15 GMT</pubDate></item><item><title><![CDATA[Reply to Segement Fault on Thu, 17 Aug 2006 18:26:09 GMT]]></title><description><![CDATA[<p>sly schrieb:</p>
<blockquote>
<p>Ich gehe davon aus, dass wohl irgendein Zeiger auf eine unerlaubte Adresse zeigt?</p>
</blockquote>
<p>Das Zeigen alleine reicht noch nicht. Erst wenn ein wilder Pointer dereferenziert wird kracht es.</p>
<p>sly schrieb:</p>
<blockquote>
<p>Aber die Frage ist: Warum läuft das Programm scheinbar erstmal normal durch, warum kracht es erst beim Beenden? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
</blockquote>
<p>Vielleicht ein delete zuviel?</p>
<p>Aber wie bereits gesagt:</p>
<p>sly schrieb:</p>
<blockquote>
<p>Ich weiß, dass hier keiner hellsehen kann und mir den Fehler sagen kann.</p>
</blockquote>
<p><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/1119386</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1119386</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Thu, 17 Aug 2006 18:26:09 GMT</pubDate></item><item><title><![CDATA[Reply to Segement Fault on Thu, 17 Aug 2006 19:47:15 GMT]]></title><description><![CDATA[<p>sly schrieb:</p>
<blockquote>
<p>Aber die Frage ist: Warum läuft das Programm scheinbar erstmal normal durch, warum kracht es erst beim Beenden? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
</blockquote>
<p>Weil's vielleicht in irgend'nem Destruktor knallt? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /><br />
Irgendwelche Objekte in der main, static Objekte? Da würd ich mal nachschauen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1119428</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1119428</guid><dc:creator><![CDATA[finix]]></dc:creator><pubDate>Thu, 17 Aug 2006 19:47:15 GMT</pubDate></item><item><title><![CDATA[Reply to Segement Fault on Fri, 18 Aug 2006 06:36:08 GMT]]></title><description><![CDATA[<p>Du kannst auch vielleicht deinen Debugger mal ganz lieb fragen ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1119547</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1119547</guid><dc:creator><![CDATA[.filmor]]></dc:creator><pubDate>Fri, 18 Aug 2006 06:36:08 GMT</pubDate></item><item><title><![CDATA[Reply to Segement Fault on Fri, 18 Aug 2006 12:17:06 GMT]]></title><description><![CDATA[<p>Beim Durchgehen meines Codes sind einige Fragen aufgekommen:</p>
<ol>
<li>
<p>spielt die Reihenfolge der delete's eine Rolle? (also ich meine wenn ich am Ende der main() jeden mit new angeforderten Speicher freigebe)</p>
</li>
<li>
<p>Es existiere folgender Code:</p>
</li>
</ol>
<pre><code class="language-cpp">//A.h
#include &quot;B.h&quot;
class A
{
   public:
      A() {}
      void doSomething(B* b)
      {
         //alle auskommentierten Zeilen für Fall 4 (siehe unten)
         //b = new B;
          b-&gt;whatEver();
         //delete b;
      }
};
</code></pre>
<p>-&gt; was ist besser/wo liegt der Unterschied zwischen folgenden Aufrufen:</p>
<pre><code class="language-cpp">#include &quot;A.h&quot;
#include &quot;B.h&quot;
int main()
{   
    A a;
    //Fall 1:
    a.doSomething(new B);

    //Fall 2:
    B b2;
    a.doSomething(&amp;b2);

    //Fall 3:
    B* b3 = new B;
    a.doSomething(b3)
    delete b3;

    //Fall 4:
    B* b4;
    a.doSomething(b4);

}
</code></pre>
<p>Was passiert in Fall 1? Eigentlich wird ja dort auch mit new neuer Speicher angefordert, aber eben über ein temporäres Objekt? Aber wer gibt den Speicher wieder frei??</p>
<p>Viele Fragen, ich hoffe auf viele Antworten. <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/1119748</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1119748</guid><dc:creator><![CDATA[sly]]></dc:creator><pubDate>Fri, 18 Aug 2006 12:17:06 GMT</pubDate></item><item><title><![CDATA[Reply to Segement Fault on Fri, 18 Aug 2006 12:23:53 GMT]]></title><description><![CDATA[<p>sly schrieb:</p>
<blockquote>
<ol>
<li>spielt die Reihenfolge der delete's eine Rolle? (also ich meine wenn ich am Ende der main() jeden mit new angeforderten Speicher freigebe)</li>
</ol>
</blockquote>
<p>Nur bei voneinander abhängigen Objekten (und das sollte man dann anders lösen ;))</p>
<blockquote>
<p>Was passiert in Fall 1? Eigentlich wird ja dort auch mit new neuer Speicher angefordert, aber eben über ein temporäres Objekt? Aber wer gibt den Speicher wieder frei??</p>
</blockquote>
<p>Niemand, das nennt man dann Speicherleck <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>In Fall 2 ist das Objekt ein gültiges Objekt auf dem Stack von main, in Fall 3 ein gültiges Objekt auf dem Heap.</p>
<p>Fall 4 ist undefiniert, da b4 nicht auf ein gültiges Objekt zeigt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1119756</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1119756</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Fri, 18 Aug 2006 12:23:53 GMT</pubDate></item><item><title><![CDATA[Reply to Segement Fault on Fri, 18 Aug 2006 12:26:35 GMT]]></title><description><![CDATA[<p>zu Frage 1) Es ist egal, in welcher Reihenfolge du den speicher freigibst, musst dich nich an die reihenfolge halten, wie du ihn mit new angefordert hast.</p>
<p>zu 2)<br />
Fall 1 ist schlecht, da du, wie bereits scholn gesagt hast, niemand den speicher freigibt. Das müsste dann in der funktion doSomething gemacht werden, was aber echt schlehct wäre, da danach das objekt nicht mehr nutzbar ist, falls man es anderweitig übergtibt. Außerdem gäbe es eine zugriffsverletzung, wenn du versuchst, ein objekt das auf dem stack liegt zu löschen.</p>
<p>Fall 2: Ist in diesem kontext wohl die beste Lösung, solagne B nicht allzu viel speicher auf dem stack anlegt. du übergibst Dosomething die Adresse, und da wird dann wa mit gemacht. So is das shcon ganz gut. Du könntest aber auch eine Referenz übergeben, manche machen das lieber so, is meiner meinung nach auch besserer Stil alsdie Adressübergabe.</p>
<p>Fall 3: Macht man so, wenn B ein sehr großes Objekt ist, was nicht auf den Stack passt. Oder man macht es, wenn man b noch außerhalb des scopes benötigt indem es erstellt wurde. Sieht mir nich so aus, also in dem fall auch nich anzuraten.</p>
<p>Fall 4 ist totaler Müll <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="🙂"
    /> Da du einbfach einen Zeiger übergibts der irgendwohin zeigt und nicht auf ein fertiges B, sieht das im code schonmal echt scheiße aus <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="🙂"
    /> Wieterhin wird das Objekt dann in DoSomething erstellt, danmit wird was gemacht und dann wird es wieder gelöscht. Wozu übergibts du dann überhaupt einen Zeiger als parameter? Den brauchst du gar nich, DoSomething kann den Zeiger auch lokal speichern.</p>
<p>Also, Fall 2 und Fall 3 is OK, der rest nich so. fall 1 möglicherweise noch, wenn du Objekte hast, die sich im Konstruktor bei einer Managerklasse registrieren und dann von dieser gelöscht werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1119760</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1119760</guid><dc:creator><![CDATA[Maxi]]></dc:creator><pubDate>Fri, 18 Aug 2006 12:26:35 GMT</pubDate></item><item><title><![CDATA[Reply to Segement Fault on Fri, 18 Aug 2006 15:11:14 GMT]]></title><description><![CDATA[<blockquote>
<p>Nur bei voneinander abhängigen Objekten (und das sollte man dann anders lösen )</p>
</blockquote>
<p>Wie?</p>
<p>Also angenommen es gibt zwei Klassen A und B, A besitze als Membervariable einen Zeiger auf ein Objekt der Klasse B.</p>
<p>Objekte der Klassen A und B werden jeweils in main() mit new angelegt und wieder mit delete freigegeben. Ist das schlecht?</p>
<blockquote>
<p>Fall 1 ist schlecht, da du, wie bereits scholn gesagt hast, niemand den speicher freigibt. Das müsste dann in der funktion doSomething gemacht werden</p>
</blockquote>
<p>WIE müsste ich das machen? Wie kann ich auf das Objekt überhaupt zugreifen? (es wurde ja kein Bezeichner eingeführt..)</p>
<blockquote>
<p>Du könntest aber auch eine Referenz übergeben, manche machen das lieber so, is meiner meinung nach auch besserer Stil alsdie Adressübergabe.</p>
</blockquote>
<p>So?</p>
<pre><code class="language-cpp">void doSomething(B&amp; b)
      {
         b.whatEver();
      }
</code></pre>
<pre><code class="language-cpp">#include &quot;A.h&quot;
#include &quot;B.h&quot;
int main()
{   
    A a;
    B b;
    a.doSomething(b);

}
</code></pre>
<blockquote>
<p>Fall 4 ist totaler Müll</p>
</blockquote>
<p>Das war deutlich. Scheiße sieht es wohl wirklich im Code aus und unsinnig ist es wahrscheinlich auch.</p>
<p>Kannst mir aber nochmal genauer erklären, warum es speichertechnisch nicht korrekt ist?</p>
<p>Ok, ich übergebe einen undefinierten Zeiger, aber in der Methode wird ja dann mit new ein gültiges Objekt erzeugt und brav wieder freigegeben.</p>
<p>Ist sowas nicht erlaubt? Einen Zeiger übergeben, der erstmal nirgendwo hinzeigt und erst in der Methode dann auf ein Objekt gerichtet wird?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1119799</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1119799</guid><dc:creator><![CDATA[sly]]></dc:creator><pubDate>Fri, 18 Aug 2006 15:11:14 GMT</pubDate></item><item><title><![CDATA[Reply to Segement Fault on Fri, 18 Aug 2006 19:27:25 GMT]]></title><description><![CDATA[<p>sly schrieb:</p>
<blockquote>
<p>Wie?<br />
Also angenommen es gibt zwei Klassen A und B, A besitze als Membervariable einen Zeiger auf ein Objekt der Klasse B.</p>
<p>Objekte der Klassen A und B werden jeweils in main() mit new angelegt und wieder mit delete freigegeben. Ist das schlecht?</p>
</blockquote>
<p>Grundsätzlich nicht. Aber angenommen im Destruktor von A wird b-&gt;free_resources() aufgerufen, wäre es schlecht wenn Du b vor a löscht. Denn dann wäre A von B abhängig. Und damit sowas nicht passiert, sollte man es anders lösen <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>WIE müsste ich das machen? Wie kann ich auf das Objekt überhaupt zugreifen? (es wurde ja kein Bezeichner eingeführt..)</p>
</blockquote>
<p>Du hast in doSomething doch den Parameter, wo das Objekt übergeben wird!? DAS müsstest Du löschen - oder es anders 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>
<blockquote>
<p>Das war deutlich. Scheiße sieht es wohl wirklich im Code aus und unsinnig ist es wahrscheinlich auch.</p>
<p>Kannst mir aber nochmal genauer erklären, warum es speichertechnisch nicht korrekt ist?</p>
</blockquote>
<p>Es ist speichertechnisch nicht korrekt weil es keinen Speicher gibt. Es gibt nur einen Zeiger, und der zeigt auf nichts. Wenn Du &quot;nichts&quot;-&gt;irgendwas() aufrufst ist das schlicht und ergreifend nicht definiert.</p>
<blockquote>
<p>Ok, ich übergebe einen undefinierten Zeiger, aber in der Methode wird ja dann mit new ein gültiges Objekt erzeugt und brav wieder freigegeben.</p>
</blockquote>
<p>Das hast Du doch auskommentiert?!?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1119945</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1119945</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Fri, 18 Aug 2006 19:27:25 GMT</pubDate></item><item><title><![CDATA[Reply to Segement Fault on Fri, 18 Aug 2006 22:21:42 GMT]]></title><description><![CDATA[<blockquote>
<p>Das hast Du doch auskommentiert?!?</p>
</blockquote>
<p>Dann hat du es falsch verstanden. Es sollte heißen, dass der auskommentierte Code für Fall4 (und nur für 4) als _nicht_ auskommentiert gelten soll. <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>War wohl etwas missverständlich.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1120036</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1120036</guid><dc:creator><![CDATA[sly]]></dc:creator><pubDate>Fri, 18 Aug 2006 22:21:42 GMT</pubDate></item><item><title><![CDATA[Reply to Segement Fault on Sat, 19 Aug 2006 03:51:11 GMT]]></title><description><![CDATA[<p>sly schrieb:</p>
<blockquote>
<blockquote>
<p>Fall 4 ist totaler Müll</p>
</blockquote>
<p>Das war deutlich. Scheiße sieht es wohl wirklich im Code aus und unsinnig ist es wahrscheinlich auch.</p>
<p>Kannst mir aber nochmal genauer erklären, warum es speichertechnisch nicht korrekt ist?</p>
</blockquote>
<p>Naja, speichertechnisch ist es schon korrekt. Zumindest wird nichts Verbotenes gemacht. Das Problem hierbei ist, es ergibt keinen Sinn. Warum übergibst du einen Zeiger, mit dem überhaupt nichts gemacht wird? Der Zeiger selbst ist in der Funktion ja nicht verfügbar, da lediglich eine Kopie seines Wertes (Adresse) übergeben wird. Und diese ist undefiniert, also kann man damit nichts anfangen. Wenn du nichts übergeben würdest, hätte das den gleichen Effekt.</p>
<pre><code class="language-cpp">void doSomething()
{
    B* b = new B;
    b-&gt;whatEver();
    delete b;
}

int main()
{  
   a.doSomething();
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1120089</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1120089</guid><dc:creator><![CDATA[groovemaster]]></dc:creator><pubDate>Sat, 19 Aug 2006 03:51:11 GMT</pubDate></item><item><title><![CDATA[Reply to Segement Fault on Sat, 19 Aug 2006 16:28:56 GMT]]></title><description><![CDATA[<p>Ok ich seh's ja ein. Sollte nur ein Beispiel sein, was syntaktisch/speichertechnisch erlaubt ist.</p>
<p>Aber zu meinem ursprünglichen Problem: ich glaube/hoffe, ich konnte die Problemursache eingrenzen. Es liegt wohl irgendwie an einer Kopie eines Objekts, das seinerseits einen vector mit einem Klassentyp enthält.</p>
<p>Ein kleines Beispiel:</p>
<pre><code class="language-cpp">#include &quot;B.h&quot;
class A
{
    private:
        vector&lt;B&gt; myVector;
    public:
        A() {}
        void add_B(const B&amp; b)
        {
            myVector.push_back(b)
        }
        const vector&lt;B&gt;&amp; getVector() const
        {
            return myVector;
        }
};
</code></pre>
<pre><code class="language-cpp">class B
{
    private:
        int m_x;
    public:
        B(int x): m_x(x) {}
        int getX() const
        {
            return m_x;
        }
};
</code></pre>
<pre><code class="language-cpp">int main()
{
    A a1;
    B b;
    a1.add_B(b);
    A a2(a1); //COPY-Konstruktor!?
    cout &lt;&lt; a2.getVector().getX(); //Hier kracht's
}
</code></pre>
<p>Und zwar bekomme ich bei diesem kleinen Programm den gleichen &quot;Segementation Fault&quot; -Fehler.</p>
<p>Muss ich in A einen Copy-Konstuktor für die Kopie des Vectors implementieren? Bisher dachte ich eigentlich, das würde die STL übernehmen.</p>
<p>P.S.: gutes Forum <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1120385</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1120385</guid><dc:creator><![CDATA[sly]]></dc:creator><pubDate>Sat, 19 Aug 2006 16:28:56 GMT</pubDate></item><item><title><![CDATA[Reply to Segement Fault on Sat, 19 Aug 2006 18:14:01 GMT]]></title><description><![CDATA[<p>Nein, du musst in diesem Fall keinen copy ctor implementieren. Der Compiler legt ohne eigenen copy ctor selbst einen an, in dem alle Member über ihren jeweiligen copy ctor initialisiert werden. Und std::vector hat selbstverständlich einen solchen ctor, damit alles korrekt durchgeführt werden kann.</p>
<p>Dein Problem ist, das mit</p>
<pre><code class="language-cpp">a2.getVector()
</code></pre>
<p>lediglich die std::vector Instanz selbst zurückgegeben wird. Und ein std::vector kennt nunmal keine Funktion getX. Du musst schon auf ein Element des Containers zugreifen, welches vom Typ B ist, damit du dann die Funktion getX aufrufen kannst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1120488</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1120488</guid><dc:creator><![CDATA[groovemaster]]></dc:creator><pubDate>Sat, 19 Aug 2006 18:14:01 GMT</pubDate></item></channel></rss>