<?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[Probleme mit Speicheradressen bei STL Listen&#x2F;Vectoren]]></title><description><![CDATA[<p>Hey @all,</p>
<p>und zwar möchte ich Personendaten, die ich in einer Struktur habe in eine Liste pushen, hier mal die Struktur:</p>
<pre><code class="language-cpp">struct persons { 
  int id; 
  std::string lastname; 
  std::string firstname; 
  std::string nickname; 
  std::string birthdate; 
  std::vector&lt;address&gt; addresses; 
  std::vector&lt;types&gt; emails; 
  std::vector&lt;types&gt; telephones; 
  std::vector&lt;types&gt; faxes; 
  std::vector&lt;types&gt; messengers; 

  persons(){} 
};
</code></pre>
<p>die liste und der iterator werden wie folgt erzeugt</p>
<pre><code class="language-cpp">typedef std::list&lt;persons&gt; PersonList; 
PersonList pl; 
PersonList::iterator plIter;
</code></pre>
<p>So, nun zum Problem, ich schreibe die Anwendung mit BCB. Wenn ich nun eine eigene Liste in einer Methode erstelle, kann ich problemlos pushen</p>
<pre><code class="language-cpp">void CUserData::parseSource(std::string _source) { 
  typedef list&lt;persons&gt; TestListe; 
  TestListe tl; 
  TestListe:iterator tlIter; 

  persons p; 
  memset(&amp;p, 0, sizeof(p)); 
  p.lastname = &quot;Mayer&quot;; 
  p.firstname = &quot;Michael&quot;; 

  tl.push_back(p); //--&gt; FUNKTIONIERT 
  pl.push_back(p); //--&gt; Hier tritt eine EAccessViolation-Exception auf 
}
</code></pre>
<p>Nun zu meiner Frage, warum kann ich nicht bzw. warum tritt eine Exception auf, wenn ich auf ein Privates Objekt in meiner eigenen Klasse zugreifen möchte, und nicht wenn ich in der Methode ein Objekt erzeuge.</p>
<p>Mir geht dieser Fehler nicht ein, mein Problem ist nur, das ich die Liste mit den Benutzerdaten noch in anderen Methoden brauche, somit brauche ich dieses Private Objekt (pl)</p>
<p>Wenn ich mir die Zeigeraddressen der beiden ansehe, dann habe ich bei der Liste die ich in der Methode erzeuge eine Adresse, und bei der Liste die ich in der Klasse erzeugt habe, habe ich den wert NULL:</p>
<pre><code class="language-cpp">PersonList* x = &amp;pl;   // Klassen-Liste (x:NULL)
PersonList* x2 = &amp;tl;  // Methoden-Liste (x2: 0012F3B0)
</code></pre>
<p>So, nun wo ist da jetzt das Problem, das ich in einem Privaten Klassenelement keine Adresse habe?<br />
Was ist daran falsch?</p>
<p>Kann mir hier bitte jemand weiterhelfen</p>
<p>Vielen Dank im Voraus<br />
Lg _freeze_</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/125674/probleme-mit-speicheradressen-bei-stl-listen-vectoren</link><generator>RSS for Node</generator><lastBuildDate>Tue, 28 Jul 2026 09:49:23 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/125674.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 08 Nov 2005 15:43:32 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Probleme mit Speicheradressen bei STL Listen&#x2F;Vectoren on Tue, 08 Nov 2005 15:43:32 GMT]]></title><description><![CDATA[<p>Hey @all,</p>
<p>und zwar möchte ich Personendaten, die ich in einer Struktur habe in eine Liste pushen, hier mal die Struktur:</p>
<pre><code class="language-cpp">struct persons { 
  int id; 
  std::string lastname; 
  std::string firstname; 
  std::string nickname; 
  std::string birthdate; 
  std::vector&lt;address&gt; addresses; 
  std::vector&lt;types&gt; emails; 
  std::vector&lt;types&gt; telephones; 
  std::vector&lt;types&gt; faxes; 
  std::vector&lt;types&gt; messengers; 

  persons(){} 
};
</code></pre>
<p>die liste und der iterator werden wie folgt erzeugt</p>
<pre><code class="language-cpp">typedef std::list&lt;persons&gt; PersonList; 
PersonList pl; 
PersonList::iterator plIter;
</code></pre>
<p>So, nun zum Problem, ich schreibe die Anwendung mit BCB. Wenn ich nun eine eigene Liste in einer Methode erstelle, kann ich problemlos pushen</p>
<pre><code class="language-cpp">void CUserData::parseSource(std::string _source) { 
  typedef list&lt;persons&gt; TestListe; 
  TestListe tl; 
  TestListe:iterator tlIter; 

  persons p; 
  memset(&amp;p, 0, sizeof(p)); 
  p.lastname = &quot;Mayer&quot;; 
  p.firstname = &quot;Michael&quot;; 

  tl.push_back(p); //--&gt; FUNKTIONIERT 
  pl.push_back(p); //--&gt; Hier tritt eine EAccessViolation-Exception auf 
}
</code></pre>
<p>Nun zu meiner Frage, warum kann ich nicht bzw. warum tritt eine Exception auf, wenn ich auf ein Privates Objekt in meiner eigenen Klasse zugreifen möchte, und nicht wenn ich in der Methode ein Objekt erzeuge.</p>
<p>Mir geht dieser Fehler nicht ein, mein Problem ist nur, das ich die Liste mit den Benutzerdaten noch in anderen Methoden brauche, somit brauche ich dieses Private Objekt (pl)</p>
<p>Wenn ich mir die Zeigeraddressen der beiden ansehe, dann habe ich bei der Liste die ich in der Methode erzeuge eine Adresse, und bei der Liste die ich in der Klasse erzeugt habe, habe ich den wert NULL:</p>
<pre><code class="language-cpp">PersonList* x = &amp;pl;   // Klassen-Liste (x:NULL)
PersonList* x2 = &amp;tl;  // Methoden-Liste (x2: 0012F3B0)
</code></pre>
<p>So, nun wo ist da jetzt das Problem, das ich in einem Privaten Klassenelement keine Adresse habe?<br />
Was ist daran falsch?</p>
<p>Kann mir hier bitte jemand weiterhelfen</p>
<p>Vielen Dank im Voraus<br />
Lg _freeze_</p>
]]></description><link>https://www.c-plusplus.net/forum/post/911901</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/911901</guid><dc:creator><![CDATA[_freeze_]]></dc:creator><pubDate>Tue, 08 Nov 2005 15:43:32 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit Speicheradressen bei STL Listen&#x2F;Vectoren on Tue, 08 Nov 2005 15:54:05 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>bist du dir denn sicher, das du eine gültige Instanz von CUserData hast, deren Methode parseSource du dann aufrufst?</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/911914</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/911914</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Tue, 08 Nov 2005 15:54:05 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit Speicheradressen bei STL Listen&#x2F;Vectoren on Tue, 08 Nov 2005 15:59:54 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ist parseSource static?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/911923</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/911923</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Tue, 08 Nov 2005 15:59:54 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit Speicheradressen bei STL Listen&#x2F;Vectoren on Tue, 08 Nov 2005 16:05:12 GMT]]></title><description><![CDATA[<p>Ich habe schon öfters vector und map in ähnlicher Weise verwendet und hatte noch nie derartige Probleme.<br />
Was ich nicht so ganz verstehe, ist, warum Du zwei typedefs machst?</p>
<p>Ich mache das z.B. so:</p>
<pre><code class="language-cpp">// Header
class MyClass
{
  public:
    MyClass();

    void foo();
  private:
    typedef vector&lt;TNode*&gt; TNodeVector;
    TNodeVector FNodeVector;
};
// Implementierung
MyClass::MyClass():
  FNodeVector(TNodeVector())
{
}

void MyClass::foo()
{
  FNodeVector.push_back(new TNode());
}
</code></pre>
<p>Das hat bisher einwandfrei funktioniert.</p>
<p>Bei Deinem Code-Ausschnitt ist mir nicht ganz klar, wo die Deklaration der privaten Member passiert.</p>
<p>Gruß,</p>
<p>Alexander</p>
]]></description><link>https://www.c-plusplus.net/forum/post/911934</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/911934</guid><dc:creator><![CDATA[Alexander Kempf]]></dc:creator><pubDate>Tue, 08 Nov 2005 16:05:12 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit Speicheradressen bei STL Listen&#x2F;Vectoren on Tue, 08 Nov 2005 16:39:34 GMT]]></title><description><![CDATA[<p>Danke an alle,</p>
<p>hatte zwar eine Referenz von meiner Klasse, jedoch diese Referenz nicht initialisiert. Ich hatte dies übersehen. Jetzt funktioniert es wieder.</p>
<p>Lg _freeze_</p>
]]></description><link>https://www.c-plusplus.net/forum/post/911971</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/911971</guid><dc:creator><![CDATA[_freeze_]]></dc:creator><pubDate>Tue, 08 Nov 2005 16:39:34 GMT</pubDate></item></channel></rss>