<?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[Initialisierungsproblem beim Konstruktor...]]></title><description><![CDATA[<p>Hallo Programmierer,</p>
<p>Ich möchte ich gerne einen Stream erstellen,<br />
der schon im Standard-Konstruktor mit lauter Nullen definiert wird...<br />
(also alle Stellen bei beispielsweise uchar m_bitStream[10])</p>
<p>bis jetzt konnte ich dies nur so erfolgreich aufrufen: (CBitStream.cpp)</p>
<p>**...<br />
/m_bitStream = new uchar [10];</p>
<p>for ( int i = 0 ; i &lt; 10 ; ++i )<br />
{<br />
m_bitStream[i] = 0;<br />
};<br />
...**<br />
----------------------------------------------------------------------------<br />
würde dies aber gerne im Konstruktor tun,<br />
so dass es automatisch geschied...</p>
<p>habe da etwas gebastelt: (CBitStream.h)<br />
**...<br />
uchar * m_bitStream;<br />
...<br />
public:<br />
CBitStream() : m_bitStream() { m_bitStream = new uchar [10];<br />
m_bitStream = 0; m_nCount = 0; }</p>
<p>~CBitStream() { GD_SAFEDELETE_ARRAY(m_bitStream); }<br />
...<br />
**<br />
der aufruf in der cpp datei dann: (CBitStream.cpp)<br />
<strong>...<br />
CBitStream::CBitStream();<br />
...</strong></p>
<p>m_bitStream bleibt aber weiterhin ein nullzeiger...<br />
was mache ich falsch?</p>
<p>vielen dank im voraus.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/198512/initialisierungsproblem-beim-konstruktor</link><generator>RSS for Node</generator><lastBuildDate>Wed, 08 Apr 2026 05:41:50 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/198512.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 22 Nov 2007 10:23:54 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Initialisierungsproblem beim Konstruktor... on Thu, 22 Nov 2007 10:23:54 GMT]]></title><description><![CDATA[<p>Hallo Programmierer,</p>
<p>Ich möchte ich gerne einen Stream erstellen,<br />
der schon im Standard-Konstruktor mit lauter Nullen definiert wird...<br />
(also alle Stellen bei beispielsweise uchar m_bitStream[10])</p>
<p>bis jetzt konnte ich dies nur so erfolgreich aufrufen: (CBitStream.cpp)</p>
<p>**...<br />
/m_bitStream = new uchar [10];</p>
<p>for ( int i = 0 ; i &lt; 10 ; ++i )<br />
{<br />
m_bitStream[i] = 0;<br />
};<br />
...**<br />
----------------------------------------------------------------------------<br />
würde dies aber gerne im Konstruktor tun,<br />
so dass es automatisch geschied...</p>
<p>habe da etwas gebastelt: (CBitStream.h)<br />
**...<br />
uchar * m_bitStream;<br />
...<br />
public:<br />
CBitStream() : m_bitStream() { m_bitStream = new uchar [10];<br />
m_bitStream = 0; m_nCount = 0; }</p>
<p>~CBitStream() { GD_SAFEDELETE_ARRAY(m_bitStream); }<br />
...<br />
**<br />
der aufruf in der cpp datei dann: (CBitStream.cpp)<br />
<strong>...<br />
CBitStream::CBitStream();<br />
...</strong></p>
<p>m_bitStream bleibt aber weiterhin ein nullzeiger...<br />
was mache ich falsch?</p>
<p>vielen dank im voraus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1408009</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1408009</guid><dc:creator><![CDATA[x-coder44]]></dc:creator><pubDate>Thu, 22 Nov 2007 10:23:54 GMT</pubDate></item><item><title><![CDATA[Reply to Initialisierungsproblem beim Konstruktor... on Thu, 22 Nov 2007 10:47:47 GMT]]></title><description><![CDATA[<blockquote>
<p>m_bitStream = new uchar [10];<br />
m_bitStream = 0;</p>
</blockquote>
<p>Und da wundert dich noch irgendwas? Du weist deinem Zeiger zunächst die Adresse des Heap-Blocks zu - und überschreibst sie im nächsten Schritt mit NULL.</p>
<p>PS: sfds</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1408031</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1408031</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 22 Nov 2007 10:47:47 GMT</pubDate></item><item><title><![CDATA[Reply to Initialisierungsproblem beim Konstruktor... on Thu, 22 Nov 2007 10:54:24 GMT]]></title><description><![CDATA[<p>das macht auch sinn, danke... (einen zeiger nullen ist schlecht)</p>
<p>die defintition im Konstruktor klappt nun,<br />
jedoch <strong>immer noch nicht</strong> das nullen des ganzes feldes !</p>
<p>und beim compilieren dauert es immer ziehmlich lang,<br />
da er versucht ne DLL aus dem internet zu holen...</p>
<pre><code class="language-cpp">...
'DefaultDomain': 'c:\windows\microsoft.net\framework\v1.1.4322\mscorlib.dll' geladen, keine Symbole geladen.
...
</code></pre>
<p>kann jedoch nicht die quelle zum abstellen finden !</p>
<p>danke im voraus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1408035</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1408035</guid><dc:creator><![CDATA[x-coder44]]></dc:creator><pubDate>Thu, 22 Nov 2007 10:54:24 GMT</pubDate></item><item><title><![CDATA[Reply to Initialisierungsproblem beim Konstruktor... on Thu, 22 Nov 2007 10:57:45 GMT]]></title><description><![CDATA[<p>x-coder44 schrieb:</p>
<blockquote>
<p>das macht auch sinn, danke... (einen zeiger nullen ist schlecht)</p>
<p>die defintition im Konstruktor klappt nun,<br />
jedoch <strong>immer noch nicht</strong> das nullen des ganzes feldes !</p>
</blockquote>
<p>Wenn du noch dazusagst, wo du das Feld &quot;nullen&quot; willst, können wir auch bei dem Problem helfen.<br />
(und bitte zeig etwas mehr als diese paar Fragmente - das erleichtert uns die Diagnose)</p>
<blockquote>
<p>und beim compilieren dauert es immer ziehmlich lang,<br />
da er versucht ne DLL aus dem internet zu holen...</p>
<pre><code class="language-cpp">...
'DefaultDomain': 'c:\windows\microsoft.net\framework\v1.1.4322\mscorlib.dll' geladen, keine Symbole geladen.
...
</code></pre>
</blockquote>
<p>Das sieht nicht aus wie eine Compiler-Nachricht, sondern eher wie eine Debug-Ausgabe (nach dem Programmstart). Und das Verzeichnis deutet auf ein .NET-System hin.<br />
Welchen Compiler (und Sprache) verwendest du denn überhaupt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1408040</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1408040</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 22 Nov 2007 10:57:45 GMT</pubDate></item><item><title><![CDATA[Reply to Initialisierungsproblem beim Konstruktor... on Thu, 22 Nov 2007 11:17:35 GMT]]></title><description><![CDATA[<p>Ich muss bei meinen Bitmanipulationen (Oder- Verknüpfung mit Werten)<br />
garantieren, dass der Stream bei seiner Initialisierung leer ist.</p>
<p>Tatsächlich jedoch ist er mit zeugs gefüllt, was ja klar ist,<br />
da er auf irgendeinen Speicherbereich zeigt.</p>
<p>Es wäre also toll wenn ich noch im Konstruktor zusätzlich anweisen kann,<br />
dass der in den eben initialisierten Stream auch noch die willkürlichen Werte löscht.</p>
<p>Mehr Fragmente kann ich gerad nicht zeigen,<br />
weil es dazu nicht mehr all zu viel gibt...</p>
<p>Zur Deiner weiteren Frage</p>
<p>Ich arbeite mit:<br />
* C + + (ausschliesslich!)<br />
* Microsoft Visual Studio .NET 2003<br />
* <a href="http://Microsoft.NET" rel="nofollow">Microsoft.NET</a> Framework 1.1<br />
* Über den Compiler hab ich gerad keine Info gefunden... sorry...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1408053</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1408053</guid><dc:creator><![CDATA[x-coder44]]></dc:creator><pubDate>Thu, 22 Nov 2007 11:17:35 GMT</pubDate></item><item><title><![CDATA[Reply to Initialisierungsproblem beim Konstruktor... on Thu, 22 Nov 2007 11:23:00 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">this-&gt;m_bitStream = new uchar [10];  // hier allziierst du Speicher
memset(this-&gt;m_bitStream, 0x00, 10); // Füllt den Strom mit 0x00
</code></pre>
<p>Ich habe den Bitstrrom jetzt mal mit 0x00 (\0) gefüllt. Wenn es di Zahl 0 sein soll dan nehme 0x30 allerdings soltest du dann nicht die term. Null überscheiben</p>
<pre><code class="language-cpp">memset(this-&gt;m_bitStream, 0x30, 9); // Füllt den Strom mit 0
</code></pre>
<p>Gruß Jochen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1408057</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1408057</guid><dc:creator><![CDATA[_Jochen_]]></dc:creator><pubDate>Thu, 22 Nov 2007 11:23:00 GMT</pubDate></item><item><title><![CDATA[Reply to Initialisierungsproblem beim Konstruktor... on Thu, 22 Nov 2007 11:47:03 GMT]]></title><description><![CDATA[<p>Vielen Dank an alle,<br />
es funktioniert wunderbar ! <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/1408068</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1408068</guid><dc:creator><![CDATA[x-coder44]]></dc:creator><pubDate>Thu, 22 Nov 2007 11:47:03 GMT</pubDate></item><item><title><![CDATA[Reply to Initialisierungsproblem beim Konstruktor... on Thu, 22 Nov 2007 12:12:02 GMT]]></title><description><![CDATA[<p>@Compiler-Info: Das dürfte ausreichen, aber im Moment bin ich mir nicht sicher, ob das hier das richtige Board ist. Ich lasse den Thread trotzdem hier, weil ich mir auch nicht sicher bin, wo du richtig wärst <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>
<p>@Ausnullen: Den Weg, das Array auszunullen, hast du doch schon im ersten Beitrag genannt - deine for()-Schleife. Die müsstest du jetzt nur noch in deinen Ctor reinstellen. Alternativ könntest du auch std::fill() verwenden.<sup>*</sup></p>
<p>Übrigens steht noch eine Frage aus deinem letzten Thread aus: Wenn die Größe des Arrays fest ist, warum verwendest du dann kein Array? Damit würdest du dir den gesamten Ärger der dynamischen Speicherverwaltung ersparen.</p>
<p>(<sup>*</sup><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/5675">@Jochen</a>: Diese Schleife oder std::fill() haben einen entscheidenden Vorteil gegenüber memset() - sie lassen sich auch anwenden, wenn die Array-Elemente größer als char's sind)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1408084</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1408084</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 22 Nov 2007 12:12:02 GMT</pubDate></item><item><title><![CDATA[Reply to Initialisierungsproblem beim Konstruktor... on Thu, 22 Nov 2007 12:24:12 GMT]]></title><description><![CDATA[<p>(<sup>*</sup><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/5675">@Jochen</a>: Diese Schleife oder std::fill() haben einen entscheidenden Vorteil gegenüber memset() - sie lassen sich auch anwenden, wenn die Array-Elemente größer als char's sind)[/quote]</p>
<p>std::fill war mir noch gar nicht bekannt. Also arbeitet es in etwa so: memset(ptr, 0x00 sizeof(uchar) * 9)</p>
<p>Ich dachte nur uchar wäre ganz klar unsigned char und immer 1 Byte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1408093</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1408093</guid><dc:creator><![CDATA[_Jochen_]]></dc:creator><pubDate>Thu, 22 Nov 2007 12:24:12 GMT</pubDate></item><item><title><![CDATA[Reply to Initialisierungsproblem beim Konstruktor... on Thu, 22 Nov 2007 12:34:14 GMT]]></title><description><![CDATA[<p><em>Jochen</em> schrieb:</p>
<blockquote>
<p>std::fill war mir noch gar nicht bekannt. Also arbeitet es in etwa so: memset(ptr, 0x00 sizeof(uchar) * 9)</p>
</blockquote>
<p>std::fill() arbeitet nicht auf Byte-Ebene, sondern auf Objekt-Ebene - es füllt jedes Objekt in einem Bereich mit einem übergebenen Typ (das funktioniert auch mit beliebigen Iteratoren und unabhängig vom Typ der Objekte).</p>
<blockquote>
<p>Ich dachte nur uchar wäre ganz klar unsigned char und immer 1 Byte.</p>
</blockquote>
<p>Ja, uchar ist immer 1 Byte groß und in dem Beispiel reicht memset() auch aus - aber fill() kann dir auch ein Array von int's, float's oder std::string's ausnullen, ohne daß du dir über das Speicher-Layout der Typen Gedanken machen mußt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1408105</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1408105</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 22 Nov 2007 12:34:14 GMT</pubDate></item><item><title><![CDATA[Reply to Initialisierungsproblem beim Konstruktor... on Thu, 22 Nov 2007 12:55:02 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p>aber fill() kann dir auch ein Array von int's, float's oder std::string's ausnullen, ohne daß du dir über das Speicher-Layout der Typen Gedanken machen mußt.</p>
</blockquote>
<p>Also das ist gut zu wissen. Danke.</p>
<p>Jochen</p>
<p>(Mod-Edit: Aber das zitieren üben wir nochmal, nicht :D)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1408107</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1408107</guid><dc:creator><![CDATA[_Jochen_]]></dc:creator><pubDate>Thu, 22 Nov 2007 12:55:02 GMT</pubDate></item></channel></rss>