<?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[Program stürzt beim Constructor ab]]></title><description><![CDATA[<p>Hallo,</p>
<p>Ich habe mir folgenden Constructor in meine User Klasse geschrieben:</p>
<pre><code class="language-cpp">User(bool justCreate, MYSQL* connection = NULL, string account = NULL, string password = NULL) : m_Connection(connection) {
            if (!justCreate) {
                query = &quot;SELECT * FROM accounts WHERE account='&quot; + account + &quot;' AND password='&quot; + password + &quot;'&quot;;
                if (mysql_query(connection, query.c_str()) == NULL) {
                    myResult = mysql_use_result(connection);
                    if ( (myRow = mysql_fetch_row(myResult)) != NULL) {
                        m_ID = atoi(myRow[0]);
                        m_Account = myRow[1];
                        m_Password = myRow[2];
                        m_RegisterDate = atoi(myRow[3]);
                        m_RegisterDateString = myRow[4];
                        m_LastLogIn = atoi(myRow[5]);
                        m_LastLogInString = myRow[6];
                        m_IsAdmin = atoi(myRow[7]);
                        m_isCorrupt = false;
                    }
                    else
                        m_isCorrupt = true;
                }
                else {
                    m_isCorrupt = true;
                }
                mysql_free_result(myResult);
            }
        }
</code></pre>
<p>Der Sinn der Sache ist, dass wenn das erste Beispiel verwende, sollte der Constructor nichts tun:</p>
<p>User* currentUser = new User(true); // Program stürzt ab<br />
User* currentUser = new User(false, Connection, &quot;Account&quot;, &quot;Passwort&quot;) // klappt<br />
er* currentUser = new User(true, Connection, &quot;Account&quot;, &quot;Passwort&quot;) // klappt auch?!!</p>
<p>Seht ihr vielleicht einen Fehler?!</p>
<p>PS: Ich denke das Thema gehört sehr wohl in dieses Forum, da es ja eigentlich nix mit Datenbanken, sondern einfach mit dem Constructor zu tun hat :p</p>
<p>Dankeschön,</p>
<p>Sam</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/257080/program-stürzt-beim-constructor-ab</link><generator>RSS for Node</generator><lastBuildDate>Thu, 10 Sep 2026 15:14:19 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/257080.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 22 Dec 2009 13:31:42 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Program stürzt beim Constructor ab on Tue, 22 Dec 2009 13:31:42 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Ich habe mir folgenden Constructor in meine User Klasse geschrieben:</p>
<pre><code class="language-cpp">User(bool justCreate, MYSQL* connection = NULL, string account = NULL, string password = NULL) : m_Connection(connection) {
            if (!justCreate) {
                query = &quot;SELECT * FROM accounts WHERE account='&quot; + account + &quot;' AND password='&quot; + password + &quot;'&quot;;
                if (mysql_query(connection, query.c_str()) == NULL) {
                    myResult = mysql_use_result(connection);
                    if ( (myRow = mysql_fetch_row(myResult)) != NULL) {
                        m_ID = atoi(myRow[0]);
                        m_Account = myRow[1];
                        m_Password = myRow[2];
                        m_RegisterDate = atoi(myRow[3]);
                        m_RegisterDateString = myRow[4];
                        m_LastLogIn = atoi(myRow[5]);
                        m_LastLogInString = myRow[6];
                        m_IsAdmin = atoi(myRow[7]);
                        m_isCorrupt = false;
                    }
                    else
                        m_isCorrupt = true;
                }
                else {
                    m_isCorrupt = true;
                }
                mysql_free_result(myResult);
            }
        }
</code></pre>
<p>Der Sinn der Sache ist, dass wenn das erste Beispiel verwende, sollte der Constructor nichts tun:</p>
<p>User* currentUser = new User(true); // Program stürzt ab<br />
User* currentUser = new User(false, Connection, &quot;Account&quot;, &quot;Passwort&quot;) // klappt<br />
er* currentUser = new User(true, Connection, &quot;Account&quot;, &quot;Passwort&quot;) // klappt auch?!!</p>
<p>Seht ihr vielleicht einen Fehler?!</p>
<p>PS: Ich denke das Thema gehört sehr wohl in dieses Forum, da es ja eigentlich nix mit Datenbanken, sondern einfach mit dem Constructor zu tun hat :p</p>
<p>Dankeschön,</p>
<p>Sam</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1826377</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1826377</guid><dc:creator><![CDATA[Samyboy]]></dc:creator><pubDate>Tue, 22 Dec 2009 13:31:42 GMT</pubDate></item><item><title><![CDATA[Reply to Program stürzt beim Constructor ab on Tue, 22 Dec 2009 13:33:17 GMT]]></title><description><![CDATA[<p>Omg tut mir echt leid für diesen dummen Thread, habs rausgefunden.</p>
<p>Der Constructor sollte so aussehen:</p>
<p>User(bool justCreate, MYSQL* connection = NULL, string account = &quot;&quot;, string password = &quot;&quot;);</p>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1826379</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1826379</guid><dc:creator><![CDATA[Samyboy]]></dc:creator><pubDate>Tue, 22 Dec 2009 13:33:17 GMT</pubDate></item><item><title><![CDATA[Reply to Program stürzt beim Constructor ab on Tue, 22 Dec 2009 14:17:49 GMT]]></title><description><![CDATA[<p>Du musst die String-Parameter übrigens nicht kopieren, wenn du sie innerhalb der Funktion nicht änderst. Nimm Const-Referenzen.</p>
<pre><code class="language-cpp">User::User(/*...*/, const std::string&amp; account = &quot;&quot;, /*...*/)
</code></pre>
<p>Und willst du den Konstruktor wirklich inline definieren? In C++ ist der gängige Weg eher, dass Funktionsdeklarationen im Header und Definitionen in der .cpp-Datei stehen. Und <code>using namespace</code> in Headerdateien ist auch eine schlechte Idee.</p>
<p>(Ja, meine Kristallkugel ist gerade frisch poliert ;))</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1826405</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1826405</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Tue, 22 Dec 2009 14:17:49 GMT</pubDate></item></channel></rss>