<?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[Gelöscht]]></title><description><![CDATA[<p>...</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/234264/gelöscht</link><generator>RSS for Node</generator><lastBuildDate>Thu, 24 Sep 2026 09:53:02 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/234264.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 15 Feb 2009 17:05:47 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Gelöscht on Mon, 21 Jan 2013 11:02:33 GMT]]></title><description><![CDATA[<p>...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1664306</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1664306</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Mon, 21 Jan 2013 11:02:33 GMT</pubDate></item><item><title><![CDATA[Reply to Gelöscht on Sun, 15 Feb 2009 17:14:13 GMT]]></title><description><![CDATA[<p>Schon mal den Debugger benutzt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1664312</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1664312</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Sun, 15 Feb 2009 17:14:13 GMT</pubDate></item><item><title><![CDATA[Reply to Gelöscht on Sun, 15 Feb 2009 17:25:59 GMT]]></title><description><![CDATA[<p>Und schon mal std::string benutzt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1664322</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1664322</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Sun, 15 Feb 2009 17:25:59 GMT</pubDate></item><item><title><![CDATA[Reply to Gelöscht on Mon, 21 Jan 2013 11:02:57 GMT]]></title><description><![CDATA[<p>...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1664351</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1664351</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Mon, 21 Jan 2013 11:02:57 GMT</pubDate></item><item><title><![CDATA[Reply to Gelöscht on Sun, 15 Feb 2009 18:27:54 GMT]]></title><description><![CDATA[<p>Dann probiers mal mit Debug Ausgaben...?</p>
<p>PS:<br />
mit std::list und std::string kann man den code vermutlich in 5-10 zeilen schreiben...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1664358</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1664358</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Sun, 15 Feb 2009 18:27:54 GMT</pubDate></item><item><title><![CDATA[Reply to Gelöscht on Sun, 15 Feb 2009 18:55:16 GMT]]></title><description><![CDATA[<p>sk0r schrieb:</p>
<blockquote>
<p>Ich muss das ganze in einer VM (Linux) compilieren und dann auf meinen Gameserver hochladen.</p>
</blockquote>
<p>umso mehr ein Grund std::string, std::list und auch noch Konstruktoren nebst Initialisierungslisten zu verwenden. Dann kann der Code schon (fast) nicht mehr crashen.</p>
<p>In RemovePlayer müssen auch die next-Zeiger umgehängt werden. Da Du das unterlässt und nur die Elemente löscht (eigentlich wird nur pStart gelöscht!?) zeigen die anderen next-Pointer irgendwann auf nicht allozierten Speicher und dann crashed es ganz automatisch.</p>
<p>Tipp: mache den Kopie-Konstruktor und den Zuweisungsoperator von CPlayer private.</p>
<p>Gruß<br />
Werner</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1664384</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1664384</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Sun, 15 Feb 2009 18:55:16 GMT</pubDate></item><item><title><![CDATA[Reply to Gelöscht on Mon, 21 Jan 2013 11:03:08 GMT]]></title><description><![CDATA[<p>...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1664408</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1664408</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Mon, 21 Jan 2013 11:03:08 GMT</pubDate></item><item><title><![CDATA[Reply to Gelöscht on Sun, 15 Feb 2009 19:46:21 GMT]]></title><description><![CDATA[<p>sk0r schrieb:</p>
<blockquote>
<p>Hä, wie meinst du das? Sorry, ich komme gerade nicht mit...</p>
</blockquote>
<p>Zeichne dir aus was dein RemovePlayer macht. (bedenke dabei wie die Node aussieht die vor der zu loeschenden Node steht)</p>
<p>Aber mal ehrlich: wenn du den Code produktiv einsetzen willst -&gt; *brrr*<br />
Bitte nimm einfach std::list und std::string und lerne was Konstruktoren sind... Das ganze ist trivial in 5-10 Zeilen loesbar und als bonus hast du die ganzen memory leaks und fehler auch noch raus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1664412</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1664412</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Sun, 15 Feb 2009 19:46:21 GMT</pubDate></item><item><title><![CDATA[Reply to Gelöscht on Sun, 15 Feb 2009 20:00:23 GMT]]></title><description><![CDATA[<p>sk0r schrieb:</p>
<blockquote>
<p>Hä, wie meinst du das? Sorry, ich komme gerade nicht mit...</p>
</blockquote>
<p>Das was Dir hier alle sagen wollen ist: Versehe 'mplayerinfo' mit einem Konstruktor ...</p>
<pre><code class="language-cpp">class CPlayer {
    struct mplayerinfo 
    {
        mplayerinfo()
            : m_Name()
            , m_Address()
            , m_SteamID()
            , pEnt( 0 )
            , bIsConnected( false )
        {
            std::fill_n( iUnused, sizeof(iUnused)/sizeof(*iUnused), 0 ); // erfordert #include &lt;algorithm&gt;
            std::fill_n( fUnused, sizeof(fUnused)/sizeof(*fUnused), 0.0f );
        }
        mplayerinfo( edict_s* player, const std::string&amp; name, const std::string&amp; address, const std::string steamID )
            : m_Name( name )
            , m_Address( address )
            , m_SteamID( steamID )
            , pEnt( player )
            , bIsConnected( false )
        {
            std::fill_n( iUnused, sizeof(iUnused)/sizeof(*iUnused), 0 );
            std::fill_n( fUnused, sizeof(fUnused)/sizeof(*fUnused), 0.0f );
        }
        std::string m_Name; // erfordert #include &lt;string&gt;
        std::string m_Address;
        std::string m_SteamID;
        edict_s *pEnt;
        bool bIsConnected;
        int iUnused[4];
        float fUnused[4];
    };

    private:
        std::vector&lt; mplayerinfo &gt; m_player; // erfordert #include &lt;vector&gt;

    public:
        CPlayer() 
            : m_player()
        {}
</code></pre>
<p>und nutze das was der C++-Standard bietet, dann reduziert sich AddPlayer und RemovePlayer zu:</p>
<pre><code class="language-cpp">void CPlayer::AddPlayer(edict_s* player, const char *pszName, const char *pszAddress, const char *pszSteamID)
{
    m_player.push_back( mplayerinfo( player, pszName, pszAddress, pszSteamID ) );
}

void CPlayer::RemovePlayer( const unsigned int pid )
{
    assert( pid &lt; m_player.size() ); // erfordert #include &lt;cassert&gt;
    m_player.erase( m_player.begin() + pid );
}
</code></pre>
<p>Du brauchst weder next noch die id noch einen Destruktor.</p>
<p>Gruß<br />
Werner</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1664418</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1664418</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Sun, 15 Feb 2009 20:00:23 GMT</pubDate></item><item><title><![CDATA[Reply to Gelöscht on Mon, 21 Jan 2013 11:03:28 GMT]]></title><description><![CDATA[<p>...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1667048</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1667048</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Mon, 21 Jan 2013 11:03:28 GMT</pubDate></item><item><title><![CDATA[Reply to Gelöscht on Fri, 20 Feb 2009 13:27:20 GMT]]></title><description><![CDATA[<p>sk0r schrieb:</p>
<blockquote>
<p>Und ich MUSS eine verkettete Liste nehmen, ich darf keine Alternative wählen. Könnt ihr mir helfen?</p>
</blockquote>
<p>Geht es nur um die zugrunde liegende Datenstruktur, die eine Liste sein muss? Oder musst du sie auch selber implementieren?</p>
<p>Im ersten Fall: Nimm - wie schon mehrmals erwähnt und von dir ebenso oft ignoriert wurde - <code>std::list</code> !</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1667053</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1667053</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Fri, 20 Feb 2009 13:27:20 GMT</pubDate></item><item><title><![CDATA[Reply to Gelöscht on Fri, 20 Feb 2009 13:44:34 GMT]]></title><description><![CDATA[<p>sk0r schrieb:</p>
<blockquote>
<p>Kannst du mir bitte per Code zeigen, wie du es meinst? Sonst verstehe ich es nicht.</p>
</blockquote>
<p>Ja, kann ich. Mach ich aber nicht.<br />
Weil du selber auch ein bisschen was tun darfst.</p>
<p>Nimm ein Blatt Papier und einen Bleistift (die 2 wichtigsten Tools eines Programmieres) und zeichne dir auf was passiert wenn du 3 Elemente in der Liste hast und du das 2. Element löschen willst.</p>
<p>Worauf zeigen die 3 next-Zeiger vor dem löschen und worauf zeigen sie danach.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1667063</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1667063</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Fri, 20 Feb 2009 13:44:34 GMT</pubDate></item></channel></rss>