<?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[Durch Vector iterieren dessen Pointer in anderem Vector gespeichert ist.]]></title><description><![CDATA[<p>Hallo,</p>
<p>Ich wollte durch ein Vector iterieren, von dem ein Pointer auf das erste Element in einem Object (Clause) gespeichert ist, dass wiederrum in einem Vector gespeichert ist. Also insgesamt durch zwei Vectoren.<br />
Ich habe mir das folgendermaßen gedacht</p>
<pre><code>for (auto it = SkolemFunctions.begin(); it != SkolemFunctions.end(); ++it) {
  //std::cout  &lt;&lt; SkolemFunctions[0]-&gt;cLiterals-&gt;meta.lit; (das hier            
  //funktioniert. Ein Test ob alles richtig abgespeichert wurde.
  while(it-&gt;cLiterals-&gt;meta.lit != 0) { // habe das Ende mit Null markiert.
   std::cout &lt;&lt; it-&gt;cLiterals-&gt;meta.lit;
   it.cLiterals++;
}
}
</code></pre>
<p>Das funktioniert leider überhaupt nicht. Compilermeldung:</p>
<pre><code>SkolemCalculatorMain.cpp:412:13: error: request for member ‘cLiterals’ in ‘* it.__gnu_cxx::__normal_iterator&lt;_Iterator, _Container&gt;::operator-&gt;&lt;Clause**, std::vector&lt;Clause*&gt; &gt;()’, which is of pointer type ‘Clause*’ (maybe you meant to use ‘-&gt;’ ?)
   while(it-&gt;cLiterals-&gt;meta.lit != 0)
</code></pre>
<p>Also letztlich wollte ich einmal durch alle lit iterieren-<br />
Der Skolemvector wurde folgendermaßen &quot;gefüllt&quot;.</p>
<pre><code>Pointerlits = &amp;litContainerForSkolemCube[0];
  std::cout &lt;&lt; &quot;CompilierTest&quot;;
  uint32_t id_149 = 188;
  Clause* NewSkolemCube = new Clause(Pointerlits, newBound, id_149);
  SkolemFunctions.push_back(NewSkolemCube);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/339406/durch-vector-iterieren-dessen-pointer-in-anderem-vector-gespeichert-ist</link><generator>RSS for Node</generator><lastBuildDate>Sun, 12 Apr 2026 04:23:16 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/339406.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 27 Aug 2016 23:00:35 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Durch Vector iterieren dessen Pointer in anderem Vector gespeichert ist. on Sat, 27 Aug 2016 23:00:35 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Ich wollte durch ein Vector iterieren, von dem ein Pointer auf das erste Element in einem Object (Clause) gespeichert ist, dass wiederrum in einem Vector gespeichert ist. Also insgesamt durch zwei Vectoren.<br />
Ich habe mir das folgendermaßen gedacht</p>
<pre><code>for (auto it = SkolemFunctions.begin(); it != SkolemFunctions.end(); ++it) {
  //std::cout  &lt;&lt; SkolemFunctions[0]-&gt;cLiterals-&gt;meta.lit; (das hier            
  //funktioniert. Ein Test ob alles richtig abgespeichert wurde.
  while(it-&gt;cLiterals-&gt;meta.lit != 0) { // habe das Ende mit Null markiert.
   std::cout &lt;&lt; it-&gt;cLiterals-&gt;meta.lit;
   it.cLiterals++;
}
}
</code></pre>
<p>Das funktioniert leider überhaupt nicht. Compilermeldung:</p>
<pre><code>SkolemCalculatorMain.cpp:412:13: error: request for member ‘cLiterals’ in ‘* it.__gnu_cxx::__normal_iterator&lt;_Iterator, _Container&gt;::operator-&gt;&lt;Clause**, std::vector&lt;Clause*&gt; &gt;()’, which is of pointer type ‘Clause*’ (maybe you meant to use ‘-&gt;’ ?)
   while(it-&gt;cLiterals-&gt;meta.lit != 0)
</code></pre>
<p>Also letztlich wollte ich einmal durch alle lit iterieren-<br />
Der Skolemvector wurde folgendermaßen &quot;gefüllt&quot;.</p>
<pre><code>Pointerlits = &amp;litContainerForSkolemCube[0];
  std::cout &lt;&lt; &quot;CompilierTest&quot;;
  uint32_t id_149 = 188;
  Clause* NewSkolemCube = new Clause(Pointerlits, newBound, id_149);
  SkolemFunctions.push_back(NewSkolemCube);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2506829</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2506829</guid><dc:creator><![CDATA[DerLernende]]></dc:creator><pubDate>Sat, 27 Aug 2016 23:00:35 GMT</pubDate></item><item><title><![CDATA[Reply to Durch Vector iterieren dessen Pointer in anderem Vector gespeichert ist. on Sat, 27 Aug 2016 23:17:27 GMT]]></title><description><![CDATA[<p>Bitte vollständiges Minimalbeispiel.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2506832</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2506832</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sat, 27 Aug 2016 23:17:27 GMT</pubDate></item><item><title><![CDATA[Reply to Durch Vector iterieren dessen Pointer in anderem Vector gespeichert ist. on Sat, 27 Aug 2016 23:30:40 GMT]]></title><description><![CDATA[<p>DerLernende schrieb:</p>
<blockquote>
<p>Hallo,</p>
<p>Ich wollte durch ein Vector iterieren, von dem ein Pointer auf das erste Element in einem Object (Clause) gespeichert ist, dass wiederrum in einem Vector gespeichert ist.</p>
</blockquote>
<p>Verstehe nur Bahnhof.<br />
1. Du hast einen Vector a<br />
2. Ein Zeiger p auf das erste Element (des Vectors - also a[0], mithin p = &amp;a[0]) ist in einem (anderen) Objekt b gespeicht.<br />
3. Jenes andere Obbjekt b lebt in einem anderen Vector c.<br />
Was hat p mit dem Iterieren über a zu tun?</p>
<p>DerLernende schrieb:</p>
<blockquote>
<p>Ich habe mir das folgendermaßen gedacht</p>
<pre><code>
</code></pre>
<p>Das funktioniert leider überhaupt nicht. Compilermeldung:</p>
<pre><code>SkolemCalculatorMain.cpp:412:13: error: request for member ‘cLiterals’ in ‘* it.__gnu_cxx::__normal_iterator&lt;_Iterator, _Container&gt;::operator-&gt;&lt;Clause**, std::vector&lt;Clause*&gt; &gt;()’, which is of pointer type ‘Clause*’ (maybe you meant to use ‘-&gt;’ ?)
   while(it-&gt;cLiterals-&gt;meta.lit != 0)
</code></pre>
</blockquote>
<p>DerLernende schrieb:</p>
<blockquote>
<p>Der Skolemvector wurde folgendermaßen &quot;gefüllt&quot;.</p>
</blockquote>
<p>Keineswegs. Das wäre so, wenn der Compiler sich nicht beschweren würde, sondern ein Programm erstellte, welches dann ggf. nicht wie gewünscht arbeitet. Das ist aber nicht der Fall. Was wir in C++ bei Compilerfehlern in der Regel (nur) benötigen, sind die Deklarationen der beteiligten Funktionen und Variablen (ggf. mit Initialisierung bei Konstanten) und die Definitionen beteiligter Klassen und Templates.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2506833</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2506833</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Sat, 27 Aug 2016 23:30:40 GMT</pubDate></item><item><title><![CDATA[Reply to Durch Vector iterieren dessen Pointer in anderem Vector gespeichert ist. on Sat, 27 Aug 2016 23:35:24 GMT]]></title><description><![CDATA[<p>DerLernende schrieb:</p>
<blockquote>
<p>Hallo,</p>
<p>Ich wollte durch ein Vector iterieren, von dem ein Pointer auf das erste Element in einem Object (Clause) gespeichert ist, dass wiederrum in einem Vector gespeichert ist. Also insgesamt durch zwei Vectoren.<br />
Ich habe mir das folgendermaßen gedacht</p>
<pre><code>for (auto it = SkolemFunctions.begin(); it != SkolemFunctions.end(); ++it) {
  //std::cout  &lt;&lt; SkolemFunctions[0]-&gt;cLiterals-&gt;meta.lit; (das hier            
  //funktioniert. Ein Test ob alles richtig abgespeichert wurde.
  while(it-&gt;cLiterals-&gt;meta.lit != 0) { // habe das Ende mit Null markiert.
   std::cout &lt;&lt; it-&gt;cLiterals-&gt;meta.lit;
   it.cLiterals++;
}
}
</code></pre>
<p>Das funktioniert leider überhaupt nicht. Compilermeldung:</p>
<pre><code>SkolemCalculatorMain.cpp:412:13: error: request for member ‘cLiterals’ in ‘* it.__gnu_cxx::__normal_iterator&lt;_Iterator, _Container&gt;::operator-&gt;&lt;Clause**, std::vector&lt;Clause*&gt; &gt;()’, which is of pointer type ‘Clause*’ (maybe you meant to use ‘-&gt;’ ?)
   while(it-&gt;cLiterals-&gt;meta.lit != 0)
</code></pre>
<p>Also letztlich wollte ich einmal durch alle lit iterieren-<br />
Der Skolemvector wurde folgendermaßen &quot;gefüllt&quot;.</p>
<pre><code>Pointerlits = &amp;litContainerForSkolemCube[0];
  std::cout &lt;&lt; &quot;CompilierTest&quot;;
  uint32_t id_149 = 188;
  Clause* NewSkolemCube = new Clause(Pointerlits, newBound, id_149);
  SkolemFunctions.push_back(NewSkolemCube);
</code></pre>
</blockquote>
<p>wenn ich dich richtig verstehe... <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>
<p>warum sollte it auf dein objekt zeigen?<br />
wie du schon erkannt hast funktioniert das eine doch <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>
<p>warum nicht so?</p>
<pre><code>for (auto it = SkolemFunctions.begin(); it != SkolemFunctions.end(); ++it) 
{
  while(SkolemFunctions[it]-&gt;cLiterals-&gt;meta.lit != 0) 
  { 
   std::cout &lt;&lt; SkolemFunctions[it]-&gt;cLiterals-&gt;meta.lit;
   SkolemFunctions[it].cLiterals++;
  }
}
</code></pre>
<p>also wenn du nichts anderes mit it machst als hier gezeigt sehe ich nicht warum die variable it auf cLiterals-&gt;meta.lit zeigen sollte ? <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>
<p>SeppJ schrieb:</p>
<blockquote>
<p>Bitte vollständiges Minimalbeispiel.</p>
</blockquote>
<p><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>
<p>hoff ich konnte helfen<br />
lg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2506834</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2506834</guid><dc:creator><![CDATA[HelPeRsS]]></dc:creator><pubDate>Sat, 27 Aug 2016 23:35:24 GMT</pubDate></item><item><title><![CDATA[Reply to Durch Vector iterieren dessen Pointer in anderem Vector gespeichert ist. on Sun, 28 Aug 2016 00:41:24 GMT]]></title><description><![CDATA[<p>HelPeRsS schrieb:</p>
<blockquote>
<p>DerLernende schrieb:</p>
<blockquote>
<p>Hallo,</p>
<p>Ich wollte durch ein Vector iterieren, von dem ein Pointer auf das erste Element in einem Object (Clause) gespeichert ist, dass wiederrum in einem Vector gespeichert ist. Also insgesamt durch zwei Vectoren.<br />
Ich habe mir das folgendermaßen gedacht</p>
<pre><code>for (auto it = SkolemFunctions.begin(); it != SkolemFunctions.end(); ++it) {
  //std::cout  &lt;&lt; SkolemFunctions[0]-&gt;cLiterals-&gt;meta.lit; (das hier            
  //funktioniert. Ein Test ob alles richtig abgespeichert wurde.
  while(it-&gt;cLiterals-&gt;meta.lit != 0) { // habe das Ende mit Null markiert.
   std::cout &lt;&lt; it-&gt;cLiterals-&gt;meta.lit;
   it.cLiterals++;
}
}
</code></pre>
<p>Das funktioniert leider überhaupt nicht. Compilermeldung:</p>
<pre><code>SkolemCalculatorMain.cpp:412:13: error: request for member ‘cLiterals’ in ‘* it.__gnu_cxx::__normal_iterator&lt;_Iterator, _Container&gt;::operator-&gt;&lt;Clause**, std::vector&lt;Clause*&gt; &gt;()’, which is of pointer type ‘Clause*’ (maybe you meant to use ‘-&gt;’ ?)
   while(it-&gt;cLiterals-&gt;meta.lit != 0)
</code></pre>
<p>Also letztlich wollte ich einmal durch alle lit iterieren-<br />
Der Skolemvector wurde folgendermaßen &quot;gefüllt&quot;.</p>
<pre><code>Pointerlits = &amp;litContainerForSkolemCube[0];
  std::cout &lt;&lt; &quot;CompilierTest&quot;;
  uint32_t id_149 = 188;
  Clause* NewSkolemCube = new Clause(Pointerlits, newBound, id_149);
  SkolemFunctions.push_back(NewSkolemCube);
</code></pre>
</blockquote>
<p>wenn ich dich richtig verstehe... <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>
<p>warum sollte it auf dein objekt zeigen?<br />
wie du schon erkannt hast funktioniert das eine doch <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>
<p>warum nicht so?</p>
<pre><code>for (auto it = SkolemFunctions.begin(); it != SkolemFunctions.end(); ++it) 
{
  while(SkolemFunctions[it]-&gt;cLiterals-&gt;meta.lit != 0) 
  { 
   std::cout &lt;&lt; SkolemFunctions[it]-&gt;cLiterals-&gt;meta.lit;
   SkolemFunctions[it].cLiterals++;
  }
}
</code></pre>
<p>also wenn du nichts anderes mit it machst als hier gezeigt sehe ich nicht warum die variable it auf cLiterals-&gt;meta.lit zeigen sollte ? <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>
<p>SeppJ schrieb:</p>
<blockquote>
<p>Bitte vollständiges Minimalbeispiel.</p>
</blockquote>
<p><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>
<p>hoff ich konnte helfen<br />
lg</p>
</blockquote>
<p>vergiss das einfach hab nicht richtig gelesen sry <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /><br />
mein fehler.</p>
<p>it sollte nat. so zugriff haben:</p>
<pre><code>for (auto it = SkolemFunctions.begin(); it != SkolemFunctions.end(); ++it) 
{
  while(it-&gt;cLiterals-&gt;meta.lit != 0) 
  { 
    //...
  }
}
</code></pre>
<p>mein beispiel war falsch <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="🙄"
    /> sry</p>
<p>lg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2506835</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2506835</guid><dc:creator><![CDATA[HelPeRsS]]></dc:creator><pubDate>Sun, 28 Aug 2016 00:41:24 GMT</pubDate></item><item><title><![CDATA[Reply to Durch Vector iterieren dessen Pointer in anderem Vector gespeichert ist. on Sun, 28 Aug 2016 00:51:40 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Bitte vollständiges Minimalbeispiel.</p>
</blockquote>
<p>Ich habe einen Vector, dieser besteht aus Objecten (Clause). Diese Objecte haben unter anderem einen Pointer auf einen weiteren Vector. und ich möchte alle Inhalte dieser unter Vectoren ausgeben. Die sich im großen Vektor befinden. Angenommen ich habe die Vectoren A, B und C mit den Inhalten A = (1, 2, 3, 0) , B = (4,5,6,0) und C (7,8,9,0). Auf das erste Element dieser Vectoren setzte ich Pointer auf das erste Element. so erhalte ich die Pointer a, b und c. Jeweils einen dieser Pointer gebe ich jeweils einem Clause Obkject über den Konstruktor mit. Diese Clauseln speicher ich alle in einem Vector Skolemfuctions.</p>
<p>Nun möchte ich +ber Skolemfunctions iterieren, so dass die Ausgabe lautet (1,2,3,4,5,6,7,8,9)</p>
<p>hoffe ich konnte mein Problem etwas verdeutlichen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2506836</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2506836</guid><dc:creator><![CDATA[DerLernende]]></dc:creator><pubDate>Sun, 28 Aug 2016 00:51:40 GMT</pubDate></item><item><title><![CDATA[Reply to Durch Vector iterieren dessen Pointer in anderem Vector gespeichert ist. on Sun, 28 Aug 2016 00:57:51 GMT]]></title><description><![CDATA[<p>HelPeRsS schrieb:</p>
<blockquote>
<p>HelPeRsS schrieb:</p>
<blockquote>
<p>DerLernende schrieb:</p>
<blockquote>
<p>Hallo,</p>
<p>Ich wollte durch ein Vector iterieren, von dem ein Pointer auf das erste Element in einem Object (Clause) gespeichert ist, dass wiederrum in einem Vector gespeichert ist. Also insgesamt durch zwei Vectoren.<br />
Ich habe mir das folgendermaßen gedacht</p>
<pre><code>for (auto it = SkolemFunctions.begin(); it != SkolemFunctions.end(); ++it) {
  //std::cout  &lt;&lt; SkolemFunctions[0]-&gt;cLiterals-&gt;meta.lit; (das hier            
  //funktioniert. Ein Test ob alles richtig abgespeichert wurde.
  while(it-&gt;cLiterals-&gt;meta.lit != 0) { // habe das Ende mit Null markiert.
   std::cout &lt;&lt; it-&gt;cLiterals-&gt;meta.lit;
   it.cLiterals++;
}
}
</code></pre>
<p>Das funktioniert leider überhaupt nicht. Compilermeldung:</p>
<pre><code>SkolemCalculatorMain.cpp:412:13: error: request for member ‘cLiterals’ in ‘* it.__gnu_cxx::__normal_iterator&lt;_Iterator, _Container&gt;::operator-&gt;&lt;Clause**, std::vector&lt;Clause*&gt; &gt;()’, which is of pointer type ‘Clause*’ (maybe you meant to use ‘-&gt;’ ?)
   while(it-&gt;cLiterals-&gt;meta.lit != 0)
</code></pre>
<p>Also letztlich wollte ich einmal durch alle lit iterieren-<br />
Der Skolemvector wurde folgendermaßen &quot;gefüllt&quot;.</p>
<pre><code>Pointerlits = &amp;litContainerForSkolemCube[0];
  std::cout &lt;&lt; &quot;CompilierTest&quot;;
  uint32_t id_149 = 188;
  Clause* NewSkolemCube = new Clause(Pointerlits, newBound, id_149);
  SkolemFunctions.push_back(NewSkolemCube);
</code></pre>
</blockquote>
<p>wenn ich dich richtig verstehe... <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>
<p>warum sollte it auf dein objekt zeigen?<br />
wie du schon erkannt hast funktioniert das eine doch <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>
<p>warum nicht so?</p>
<pre><code>for (auto it = SkolemFunctions.begin(); it != SkolemFunctions.end(); ++it) 
{
  while(SkolemFunctions[it]-&gt;cLiterals-&gt;meta.lit != 0) 
  { 
   std::cout &lt;&lt; SkolemFunctions[it]-&gt;cLiterals-&gt;meta.lit;
   SkolemFunctions[it].cLiterals++;
  }
}
</code></pre>
<p>also wenn du nichts anderes mit it machst als hier gezeigt sehe ich nicht warum die variable it auf cLiterals-&gt;meta.lit zeigen sollte ? <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>
<p>SeppJ schrieb:</p>
<blockquote>
<p>Bitte vollständiges Minimalbeispiel.</p>
</blockquote>
<p><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>
<p>hoff ich konnte helfen<br />
lg</p>
</blockquote>
<p>vergiss das einfach hab nicht richtig gelesen sry <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /><br />
mein fehler.</p>
<p>it sollte nat. so zugriff haben:</p>
<pre><code>for (auto it = SkolemFunctions.begin(); it != SkolemFunctions.end(); ++it) 
{
  while(it-&gt;cLiterals-&gt;meta.lit != 0) 
  { 
    //...
  }
}
</code></pre>
<p>mein beispiel war falsch <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="🙄"
    /> sry</p>
<p>lg</p>
</blockquote>
<p>Danke. Aber ist das nicht geau das gleichte das ich auch habe?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2506837</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2506837</guid><dc:creator><![CDATA[DerLernende]]></dc:creator><pubDate>Sun, 28 Aug 2016 00:57:51 GMT</pubDate></item><item><title><![CDATA[Reply to Durch Vector iterieren dessen Pointer in anderem Vector gespeichert ist. on Sun, 28 Aug 2016 01:11:56 GMT]]></title><description><![CDATA[<p>camper schrieb:</p>
<blockquote>
<p>DerLernende schrieb:</p>
<blockquote>
<p>Hallo,</p>
<p>Ich wollte durch ein Vector iterieren, von dem ein Pointer auf das erste Element in einem Object (Clause) gespeichert ist, dass wiederrum in einem Vector gespeichert ist.</p>
</blockquote>
<p>Verstehe nur Bahnhof.<br />
1. Du hast einen Vector a<br />
2. Ein Zeiger p auf das erste Element (des Vectors - also a[0], mithin p = &amp;a[0]) ist in einem (anderen) Objekt b gespeicht.<br />
3. Jenes andere Obbjekt b lebt in einem anderen Vector c.<br />
Was hat p mit dem Iterieren über a zu tun?</p>
<p>DerLernende schrieb:</p>
<blockquote>
<p>Ich habe mir das folgendermaßen gedacht</p>
<pre><code>
</code></pre>
<p>Das funktioniert leider überhaupt nicht. Compilermeldung:</p>
<pre><code>SkolemCalculatorMain.cpp:412:13: error: request for member ‘cLiterals’ in ‘* it.__gnu_cxx::__normal_iterator&lt;_Iterator, _Container&gt;::operator-&gt;&lt;Clause**, std::vector&lt;Clause*&gt; &gt;()’, which is of pointer type ‘Clause*’ (maybe you meant to use ‘-&gt;’ ?)
   while(it-&gt;cLiterals-&gt;meta.lit != 0)
</code></pre>
</blockquote>
<p>DerLernende schrieb:</p>
<blockquote>
<p>Der Skolemvector wurde folgendermaßen &quot;gefüllt&quot;.</p>
</blockquote>
<p>Keineswegs. Das wäre so, wenn der Compiler sich nicht beschweren würde, sondern ein Programm erstellte, welches dann ggf. nicht wie gewünscht arbeitet. Das ist aber nicht der Fall. Was wir in C++ bei Compilerfehlern in der Regel (nur) benötigen, sind die Deklarationen der beteiligten Funktionen und Variablen (ggf. mit Initialisierung bei Konstanten) und die Definitionen beteiligter Klassen und Templates.</p>
</blockquote>
<p>beteiligt sind unter anderem</p>
<p>Im Vector</p>
<pre><code>std::vector&lt;Clause*&gt; SkolemFunctions; (global)
</code></pre>
<p>werden die Clauseln gespeichert.</p>
<p>Die Clauseln ( Hier ist der Code nicht von mir)</p>
<pre><code>class Clause {
 public:
  // Clauses' data

  // The literals
  Literal* cLiterals;

  Literal wl1;
  Literal wl2;
  Literal wl3;
size_t cBound;

  // A flag, can be used for, e.g., mark the clause as to delete
  // cFlag == 0 : nothing
  // cFlag == 1 : delete clause
  uint32_t cFlag;

  // The clause ID
  uint32_t cID;

  // Constuctor:
  // bound: pointer to the first universal ( existential ) literal in a clause ( cube ) 
  // points to the clause stopper 0, if there is no universal/existential literal
  Clause ( Literal* literals, size_t bound, uint32_t id ) :
	cLiterals( literals ),
	wl1(0),
	wl2(0),
	wl3(0),
	cBound( bound ),
	cFlag( 0 ),
	cID( id )
	  { 
		assert( literals != nullptr );
	  }

  // Destructor
  ~Clause( void ) { delete [] cLiterals; }
</code></pre>
<p>Unter cLiteralsbei den Clauseln werden die Literale gespeichert- ( Die Klasse hat noch ein paar funktionalitäten mehr aber das sollte das wesentliche sein)</p>
<pre><code>union Literal {
  struct meta_ {
    uint32_t lit;
    uint32_t lvl;
    meta_( void ) : lit(0), lvl(0) {}
    meta_( const uint32_t&amp; literal, const uint32_t&amp; level  ) : lit(literal), lvl(level) {}
  } meta;
  uint64_t data;
  Literal( const uint64_t&amp; in ): data(in) {}
  Literal( void ): data(0) {}
  Literal( Literal const&amp; in ): data(in.data) {}
  Literal( uint32_t const&amp; litId, uint32_t const&amp; litLvl, bool const&amp; tag, bool const&amp; constraint ): 
    meta(
		 litId, 
		 (
		  // I changed this, such that the level is now always given by the bits 01fffffff in data.lvl.
		  // 0x20000000 == 1 iff literal is forall (also 0x00000001 == 1 iff literal is forall)
		  // I think 0x1fffffff should be enough and the version before was a little bit confusing
		  // reminder: 0x20000000 has to &quot;1&quot; for universal lits, so that we can easily sort clauses...
		  ( ( litLvl &amp; 0x1 ) ? ( litLvl | 0x20000000 ) : litLvl ) | ( tag ? 0x80000000 : 0 ) | ( constraint ? 0x40000000 : 0 ) ) )
  { assert(litLvl &lt;= levelMax); }
  ~Literal( void ) {}
</code></pre>
<p>Ich möchte nun so über Skolemfunctions iterieren dass ich alle auf einen Schlag lits von jedem Clause-Object bekomme</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2506838</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2506838</guid><dc:creator><![CDATA[DerLernende]]></dc:creator><pubDate>Sun, 28 Aug 2016 01:11:56 GMT</pubDate></item><item><title><![CDATA[Reply to Durch Vector iterieren dessen Pointer in anderem Vector gespeichert ist. on Sun, 28 Aug 2016 02:11:20 GMT]]></title><description><![CDATA[<pre><code>std::vector&lt;Clause*&gt; SkolemFunctions; (global)
</code></pre>
<p>damit ist alles klar (wir hätten nat. auch die Fehlermeldung genauer studieren können, aber das wäre weniger lehrreich).</p>
<pre><code class="language-cpp">for (auto it = SkolemFunctions.begin(); it != SkolemFunctions.end(); ++it) {
  //std::cout  &lt;&lt; SkolemFunctions[0]-&gt;cLiterals-&gt;meta.lit; (das hier            
  //funktioniert. Ein Test ob alles richtig abgespeichert wurde.
  while(it-&gt;cLiterals-&gt;meta.lit != 0) { // habe das Ende mit Null markiert.
  //        ^ hier stolpert der Compiler
</code></pre>
<p>Dein Container speichert Zeiger. Mithin ist</p>
<pre><code class="language-cpp">*it
</code></pre>
<p>auch ein Zeiger und da</p>
<pre><code class="language-cpp">it-&gt;foo
</code></pre>
<p>äquvialent ist zu</p>
<pre><code class="language-cpp">(*it).foo
</code></pre>
<p>versucht</p>
<pre><code class="language-cpp">it-&gt;cLiterals
</code></pre>
<p>auf ein Member cLiterals eines Zeigers zuzugreifen. Das geht nat. nicht. Ein zusätzliche Dereferenzierung ist erforderlich:</p>
<pre><code class="language-cpp">(*it)-&gt;cLiterals
</code></pre>
<p>Mit der neu in C++11 eingeführten for-Variante spart man sich das, da dort die Schleifenvariable bereits ein Element repräsentiert und nicht nur ein Iterator darauf ist:</p>
<pre><code class="language-cpp">for (auto&amp; skolemFunc : SkolemFunctions) {
  while(skolemFunc-&gt;cLiterals-&gt;meta.lit != 0) { // habe das Ende mit Null markiert.
    std::cout &lt;&lt; skolemFunc-&gt;cLiterals-&gt;meta.lit;
    skolemFunc-&gt;cLiterals++;
  }
}
</code></pre>
<p>So hätte der Eingangspost aussehen können:</p>
<blockquote>
<p>Hallo,</p>
<p>Ich habe</p>
<pre><code class="language-cpp">std::vector&lt;Clause*&gt; SkolemFunctions;
</code></pre>
<p>und möchte über diesen Vector iterieren:</p>
<pre><code class="language-cpp">for (auto it = SkolemFunctions.begin(); it != SkolemFunctions.end(); ++it) {
  //std::cout  &lt;&lt; SkolemFunctions[0]-&gt;cLiterals-&gt;meta.lit; (das hier            
  //funktioniert. Ein Test ob alles richtig abgespeichert wurde.
  while(it-&gt;cLiterals-&gt;meta.lit != 0) { // habe das Ende mit Null markiert.
//          ^ Fehlermeldung hier
   std::cout &lt;&lt; it-&gt;cLiterals-&gt;meta.lit;
   it.cLiterals++;
}
}
</code></pre>
<p>Leider gefällt das dem Compiler nicht:</p>
<pre><code>SkolemCalculatorMain.cpp:412:13: error: request for member ‘cLiterals’ in ‘* it.__gnu_cxx::__normal_iterator&lt;_Iterator, _Container&gt;::operator-&gt;&lt;Clause**, std::vector&lt;Clause*&gt; &gt;()’, which is of pointer type ‘Clause*’ (maybe you meant to use ‘-&gt;’ ?)
   while(it-&gt;cLiterals-&gt;meta.lit != 0)
</code></pre>
<p>Was mache ich falsch?</p>
</blockquote>
<p>1. Bitte vorhanden Code nach Möglichkeit nicht durch Prosa ersetzen.<br />
2. Die genaue Stelle (der Compiler gibt Zeile und Spalte an) der Fehlermeldung mitteilen. Die Zeilennummern stimmen logischerweise i.d.R. nicht überein - so dass für uns die Zuordnung schwierig sein kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2506839</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2506839</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Sun, 28 Aug 2016 02:11:20 GMT</pubDate></item><item><title><![CDATA[Reply to Durch Vector iterieren dessen Pointer in anderem Vector gespeichert ist. on Sun, 28 Aug 2016 13:17:24 GMT]]></title><description><![CDATA[<p>camper schrieb:</p>
<blockquote>
<pre><code>std::vector&lt;Clause*&gt; SkolemFunctions; (global)
</code></pre>
<p>damit ist alles klar (wir hätten nat. auch die Fehlermeldung genauer studieren können, aber das wäre weniger lehrreich).</p>
<pre><code class="language-cpp">for (auto it = SkolemFunctions.begin(); it != SkolemFunctions.end(); ++it) {
  //std::cout  &lt;&lt; SkolemFunctions[0]-&gt;cLiterals-&gt;meta.lit; (das hier            
  //funktioniert. Ein Test ob alles richtig abgespeichert wurde.
  while(it-&gt;cLiterals-&gt;meta.lit != 0) { // habe das Ende mit Null markiert.
  //        ^ hier stolpert der Compiler
</code></pre>
<p>Dein Container speichert Zeiger. Mithin ist</p>
<pre><code class="language-cpp">*it
</code></pre>
<p>auch ein Zeiger und da</p>
<pre><code class="language-cpp">it-&gt;foo
</code></pre>
<p>äquvialent ist zu</p>
<pre><code class="language-cpp">(*it).foo
</code></pre>
<p>versucht</p>
<pre><code class="language-cpp">it-&gt;cLiterals
</code></pre>
<p>auf ein Member cLiterals eines Zeigers zuzugreifen. Das geht nat. nicht. Ein zusätzliche Dereferenzierung ist erforderlich:</p>
<pre><code class="language-cpp">(*it)-&gt;cLiterals
</code></pre>
<p>Mit der neu in C++11 eingeführten for-Variante spart man sich das, da dort die Schleifenvariable bereits ein Element repräsentiert und nicht nur ein Iterator darauf ist:</p>
<pre><code class="language-cpp">for (auto&amp; skolemFunc : SkolemFunctions) {
  while(skolemFunc-&gt;cLiterals-&gt;meta.lit != 0) { // habe das Ende mit Null markiert.
    std::cout &lt;&lt; skolemFunc-&gt;cLiterals-&gt;meta.lit;
    skolemFunc-&gt;cLiterals++;
  }
}
</code></pre>
<p>So hätte der Eingangspost aussehen können:</p>
<blockquote>
<p>Hallo,</p>
<p>Ich habe</p>
<pre><code class="language-cpp">std::vector&lt;Clause*&gt; SkolemFunctions;
</code></pre>
<p>und möchte über diesen Vector iterieren:</p>
<pre><code class="language-cpp">for (auto it = SkolemFunctions.begin(); it != SkolemFunctions.end(); ++it) {
  //std::cout  &lt;&lt; SkolemFunctions[0]-&gt;cLiterals-&gt;meta.lit; (das hier            
  //funktioniert. Ein Test ob alles richtig abgespeichert wurde.
  while(it-&gt;cLiterals-&gt;meta.lit != 0) { // habe das Ende mit Null markiert.
//          ^ Fehlermeldung hier
   std::cout &lt;&lt; it-&gt;cLiterals-&gt;meta.lit;
   it.cLiterals++;
}
}
</code></pre>
<p>Leider gefällt das dem Compiler nicht:</p>
<pre><code>SkolemCalculatorMain.cpp:412:13: error: request for member ‘cLiterals’ in ‘* it.__gnu_cxx::__normal_iterator&lt;_Iterator, _Container&gt;::operator-&gt;&lt;Clause**, std::vector&lt;Clause*&gt; &gt;()’, which is of pointer type ‘Clause*’ (maybe you meant to use ‘-&gt;’ ?)
   while(it-&gt;cLiterals-&gt;meta.lit != 0)
</code></pre>
<p>Was mache ich falsch?</p>
</blockquote>
<p>1. Bitte vorhanden Code nach Möglichkeit nicht durch Prosa ersetzen.<br />
2. Die genaue Stelle (der Compiler gibt Zeile und Spalte an) der Fehlermeldung mitteilen. Die Zeilennummern stimmen logischerweise i.d.R. nicht überein - so dass für uns die Zuordnung schwierig sein kann.</p>
</blockquote>
<p>Super. Vielen Dank. Das funktioniert einwandfrei.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2506858</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2506858</guid><dc:creator><![CDATA[DerLernende]]></dc:creator><pubDate>Sun, 28 Aug 2016 13:17:24 GMT</pubDate></item></channel></rss>