<?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[while ((a=b.foo())!=NULL)....]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich programmiere mir gerade eine kleine Datenbankklasse für MySQL unter wxWidgets. Ich bin auf ein Problem gestoßen, bei dem ich gerade nicht weiß wo ich nachschalgen muss um einen Ansatz für ne Lösung zu finden.</p>
<p>Ich würde gerne folgendes machen:</p>
<pre><code class="language-cpp">//...irgendwo im Quelltext...
  {
  wxMySQLSelect q(_(&quot;testtabelle&quot;)); // Macht einen &quot;SELECT * FROM testtabell;
  q.makequery();  // Führt den Querys aus und macht alles nötige
  wxMySQLRes a;
  while ((a=q.nextLine())!=NULL) // Hier: liefere ein wxMySQLRes oder NULL
    {
    // Gib am Bildschirm aus was du findest....
    }
  // ....
  }
</code></pre>
<p>Das das ganze in wxWidgets steht ist nur Nebensache. Mein Problem liegt am (a=q.nextLine())!=NULL.</p>
<p>Ich hab in meiner Funktion eingebaut:</p>
<pre><code class="language-cpp">wxMySQLRes wxMySQLSelect::nextLine()
  {
  //...viel Code....
  MYSQL_ROW row;
  row=mysql_fetch_row(res);
  if (row==NULL)
    {
    return (wxMySQLRes)NULL;
    }
  //...verarbeite die Daten zum wxMySQLRes
  return (wxMySQLRes)(die verarbeiteten Daten);
  }
</code></pre>
<p>Wenn ich allerdings jetzt meinen g++ anschmeiße, dann bekomme ich die Meldung</p>
<pre><code>error: could not convert 'a.wxMySQLSelect::operator=((const wxMySQLRes&amp;)((const wxMySQLRes*)(&amp; wxMySQLSelect::nextLine()()))))' to 'bool'
</code></pre>
<p>Ok, ich hab dann nachgeschaut und müsste jetzt den Operator == und != überladen. Hab ich versucht mit</p>
<pre><code class="language-cpp">bool operator == (const wxMySQLSelect&amp; op2) const {return false};
</code></pre>
<p>Das steht natürlich in meiner Klasse. Einfach mal &quot;return false&quot; damit ich sehe ob er die Funktion überhaupt findet. Ich hatte schon vermutet was dann eingetreten ist, der Type (const wxMySQLSelect&amp; op2) passt nicht.</p>
<p>Jetzt bin ich am Ende mit meinem Latein. Ich würde gerne die Funktion nextLine() so lange aufrufen, bis keine Daten mehr vorhanden sind (also NULL), damit ich das in einer while-Schlrife abarbeiten kann.<br />
Wie muss ich das machen? Wer hat einen Denkanstoß für mich?</p>
<p>Danke,<br />
Stefan</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/222721/while-a-b-foo-null</link><generator>RSS for Node</generator><lastBuildDate>Sun, 04 Oct 2026 20:47:02 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/222721.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 16 Sep 2008 14:39:06 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to while ((a=b.foo())!=NULL).... on Tue, 16 Sep 2008 14:40:36 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich programmiere mir gerade eine kleine Datenbankklasse für MySQL unter wxWidgets. Ich bin auf ein Problem gestoßen, bei dem ich gerade nicht weiß wo ich nachschalgen muss um einen Ansatz für ne Lösung zu finden.</p>
<p>Ich würde gerne folgendes machen:</p>
<pre><code class="language-cpp">//...irgendwo im Quelltext...
  {
  wxMySQLSelect q(_(&quot;testtabelle&quot;)); // Macht einen &quot;SELECT * FROM testtabell;
  q.makequery();  // Führt den Querys aus und macht alles nötige
  wxMySQLRes a;
  while ((a=q.nextLine())!=NULL) // Hier: liefere ein wxMySQLRes oder NULL
    {
    // Gib am Bildschirm aus was du findest....
    }
  // ....
  }
</code></pre>
<p>Das das ganze in wxWidgets steht ist nur Nebensache. Mein Problem liegt am (a=q.nextLine())!=NULL.</p>
<p>Ich hab in meiner Funktion eingebaut:</p>
<pre><code class="language-cpp">wxMySQLRes wxMySQLSelect::nextLine()
  {
  //...viel Code....
  MYSQL_ROW row;
  row=mysql_fetch_row(res);
  if (row==NULL)
    {
    return (wxMySQLRes)NULL;
    }
  //...verarbeite die Daten zum wxMySQLRes
  return (wxMySQLRes)(die verarbeiteten Daten);
  }
</code></pre>
<p>Wenn ich allerdings jetzt meinen g++ anschmeiße, dann bekomme ich die Meldung</p>
<pre><code>error: could not convert 'a.wxMySQLSelect::operator=((const wxMySQLRes&amp;)((const wxMySQLRes*)(&amp; wxMySQLSelect::nextLine()()))))' to 'bool'
</code></pre>
<p>Ok, ich hab dann nachgeschaut und müsste jetzt den Operator == und != überladen. Hab ich versucht mit</p>
<pre><code class="language-cpp">bool operator == (const wxMySQLSelect&amp; op2) const {return false};
</code></pre>
<p>Das steht natürlich in meiner Klasse. Einfach mal &quot;return false&quot; damit ich sehe ob er die Funktion überhaupt findet. Ich hatte schon vermutet was dann eingetreten ist, der Type (const wxMySQLSelect&amp; op2) passt nicht.</p>
<p>Jetzt bin ich am Ende mit meinem Latein. Ich würde gerne die Funktion nextLine() so lange aufrufen, bis keine Daten mehr vorhanden sind (also NULL), damit ich das in einer while-Schlrife abarbeiten kann.<br />
Wie muss ich das machen? Wer hat einen Denkanstoß für mich?</p>
<p>Danke,<br />
Stefan</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1582924</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1582924</guid><dc:creator><![CDATA[stefanjann]]></dc:creator><pubDate>Tue, 16 Sep 2008 14:40:36 GMT</pubDate></item><item><title><![CDATA[Reply to while ((a=b.foo())!=NULL).... on Tue, 16 Sep 2008 14:41:32 GMT]]></title><description><![CDATA[<p>Deine Funktion nextLine gibt doch garkeinen Zeiger zurück. Wie soll sie dann den Zeiger 0 zurückgeben können?</p>
<p>Eine Möglichkeit wäre, der Klasse einen Operator zu spendieren, der einen boolschen Wert zurückgibt (operator void* oder besser: Google safe bool idiom). Dann kannst Du folgendes machen:</p>
<pre><code class="language-cpp">while (a = q.nextLine()) { }
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1582927</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1582927</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Tue, 16 Sep 2008 14:41:32 GMT</pubDate></item><item><title><![CDATA[Reply to while ((a=b.foo())!=NULL).... on Tue, 16 Sep 2008 15:14:53 GMT]]></title><description><![CDATA[<p>Ich glaub auch ich hab die richtige Seite im Internet gefunden:<br />
<a href="http://www.artima.com/cppsource/safebool.html" rel="nofollow">http://www.artima.com/cppsource/safebool.html</a><br />
Allerdings bin ich wohl noch zu viel Anfänger um das Umsetzen zu können. Auf gut Deutsch: Ich kapiers nicht so richtig.</p>
<p>Daher werd ich mir wohl ne andere Lösung suchen müssen.</p>
<p>Danke trotzdem,<br />
Stefan</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1582958</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1582958</guid><dc:creator><![CDATA[stefanjann]]></dc:creator><pubDate>Tue, 16 Sep 2008 15:14:53 GMT</pubDate></item><item><title><![CDATA[Reply to while ((a=b.foo())!=NULL).... on Tue, 16 Sep 2008 15:28:37 GMT]]></title><description><![CDATA[<p>Ich lasse so ungerne Themen offen, daher zumindest mein Weg, der momentan hilft:</p>
<pre><code class="language-cpp">wxMySQLSelect::nextLine()
  {
  //...viel Code...
  wxMySQLRes givback;
  MYSQL_ROW row;
  row=mysql_fetch_row(res);
  if (row==NULL)
    {
    return givback;
    }
  //..verarbeitung
  return givback;
  }

//...irgendwo im Code
  {
  wxMySQLRes resi;
  wxMySQLSelect q(_T(&quot;testtabelle&quot;));
  q.makeQuery();
  do
    {
    resi=q.nextLine();
    if (!resi.empty())
      {
      //...Gib die Daten am Bildschirm aus.
      }
    } while (!resi.empty());
  }
  q.makefree();
</code></pre>
<p>Ist jetzt auch mit While, hat aber zweimal die Prüfung drinnen ob Daten beinhaltet sind. Kurz vielleicht noch die Anmerkung: wxMySQKRes ist eine Hash-Map von wxWidgets.</p>
<p>Gruß,<br />
Stefan</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1582969</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1582969</guid><dc:creator><![CDATA[stefanjann]]></dc:creator><pubDate>Tue, 16 Sep 2008 15:28:37 GMT</pubDate></item></channel></rss>