<?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[variable aus **argv initialisieren in einem static int]]></title><description><![CDATA[<p>Moin ich kann der int Variable &quot;versuch&quot; nicht ihren passenden Wert geben <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 />
Zeile 61 error from this location.</p>
<p>Ich häng da schon seit drei Tagen dran <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=":/"
      alt="😕"
    /><br />
Fehler:</p>
<p>databaselite.h|15|error: invalid use of member ‘databaselite::versuch’ in static member function|</p>
<p>und</p>
<p>/home/cseipel/Code::Blocks Kram/GTK/test project/animedata/databaselite.h|61|error: from this location|</p>
<p>Habt Gnade ich bin ein totaler Anfänger ;__;</p>
<p>databaselite.h</p>
<pre><code>#ifndef DATABASELITE_H_INCLUDED
#define DATABASELITE_H_INCLUDED

#include &lt;iostream&gt;
#include &lt;vector&gt;
#include &lt;sqlite3.h&gt;
#include &lt;string&gt;
#include &lt;stdlib.h&gt;
#include &lt;stdio.h&gt;
using namespace std;

class databaselite{
private:

    int versuch;

    static int ca;

    int **argc;
    char  ***argv;

    sqlite3 *db;
    char *zErrMsg = 0;
    int rc;
    char *sql;
    const char* data = &quot;Callback function called&quot;;

public:

/* KONSTRUKTOR */
    databaselite(int *e, char **a){argc = &amp;e; argv = &amp;a;};
/*---------------------------------*/

/* SPIELEREIN */

    void get_argc(){
        cout &lt;&lt; endl &lt;&lt; **argc;
    }       // juhu[0][0] wäre auch möglich

    void get_argv(){ cout &lt;&lt; argv[0][0] &lt;&lt; endl &lt;&lt; &quot;argv&quot;;};
/* ---------------------------------- */

    static int callback(void *data, int argc, char **argv, char **azColName){
        int i;
        for(i=0; i&lt;argc; i++){
            cout &lt;&lt; azColName[i] &lt;&lt; &quot; = &quot; &lt;&lt; argv[i] &lt;&lt; endl;

        }
        cout &lt;&lt; endl;
        return 0;
    }

        static int COUNTcallback(void *data, int argc, char **argv, char **azColName){

        for(int i=0; i&lt;argc; i++){ }
        cout &lt;&lt; endl &lt;&lt; &quot;--&gt;&quot; &lt;&lt; **argv &lt;&lt; endl;
        // EINE ZEILE WEITER UNTEN IST DAS PROBLEM

        versuch = atoi (*argv);

        return 0;
    }

    void ok(){
        rc = sqlite3_exec(db, sql, callback, (void*)data, &amp;zErrMsg);
        if( rc != SQLITE_OK ){
            cout &lt;&lt; &quot;SQL Fehler: &quot; &lt;&lt; zErrMsg;
            sqlite3_free(zErrMsg);
        }else{
      cout &lt;&lt; &quot;Operation wurde erfolgreich ausgeführt\n&quot;;
   }

   }// OK ENDE

    void open(){
            rc = sqlite3_open(&quot;test.db&quot;, &amp;db);

                if( rc ){
                    cout &lt;&lt; &quot;Datenbank öffnen fehlgeschlagen: &quot; &lt;&lt; sqlite3_errmsg(db);

                }else{
                    cerr &lt;&lt; &quot;Datenbank wurde erfolgreich geöffnet\n&quot;;

                }
        // sqlite3_close(db);
    } // ende von open

    void close_database(){
         sqlite3_close(db);
         cout &lt;&lt; endl &lt;&lt; &quot;Datenbank wurde geschlossen&quot;;
    }

    void select(){
        sql = &quot;SELECT * FROM Serien&quot;;
        ok();
    }

    void insert(){
    sql = &quot;INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) &quot;  \
          &quot;VALUES (1, 'Paul', 32, 'California', 20000.00 ); &quot; \
         &quot;INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) &quot;  \
         &quot;VALUES (2, 'Allen', 25, 'Texas', 15000.00 ); &quot;     \
         &quot;INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)&quot; \
         &quot;VALUES (3, 'Teddy', 23, 'Norway', 20000.00 );&quot; \
         &quot;INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)&quot; \
         &quot;VALUES (4, 'Mark', 25, 'Rich-Mond ', 65000.00 );&quot;;

   /* Execute SQL statement */
   rc = sqlite3_exec(db, sql, callback, 0, &amp;zErrMsg);
   if( rc != SQLITE_OK ){
	cout &lt;&lt; &quot;SQL Fehler: &quot;  &lt;&lt; zErrMsg;
      sqlite3_free(zErrMsg);
   }else{
      cout &lt;&lt; &quot;Records created successfully&quot; &lt;&lt; endl;
   }

    } // INSERT ENDING

    void update(){
        sql = &quot;UPDATE COMPANY set SALARY = 25000.00 where ID=1; &quot;;
        ok();
   } // UPDATE ENDE

   void loeschen(){
        sql = &quot;DELETE from COMPANY where ID=2;&quot;;
        ok();
   } // DELETE ENDE

   void count(){
    sql = &quot;SELECT count(*) FROM Serien&quot;;
   /* Execute SQL statement */
    rc = sqlite3_exec(db, sql, COUNTcallback, (void*)data, &amp;zErrMsg);

/*
    if( rc != SQLITE_OK ){
       cerr &lt;&lt; &quot;SQL error: &quot;&lt;&lt;  zErrMsg &lt;&lt; &quot;\n&quot;;
      sqlite3_free(zErrMsg);
   }else{
      fprintf(stdout, &quot;Operation done successfully\n&quot;);
   } */

    }// COUNT

};

#endif // DATABASELITE_H_INCLUDED
</code></pre>
<p>und hier der rest falls ihr ihn braucht.</p>
<p>startmenue.h</p>
<pre><code>#ifndef STARTMENUE_H_INCLUDED
#define STARTMENUE_H_INCLUDED

#include &lt;iostream&gt;
#include &lt;string&gt;

#include &quot;databaselite.h&quot;

/* Für die Eingabe von nur einen Zeichen [X1] */
#include &lt;stdio.h&gt;
#include &lt;string.h&gt;

using namespace std;

#include &quot;menue.h&quot;

class startmenue : public menue{
private:
        databaselite *dl;
public:

    startmenue(databaselite *A){dl = A;};
    ~startmenue(){};

void menue_anzeigen(){
    cout &lt;&lt; &quot;1. Liste ansehen&quot; &lt;&lt; endl &lt;&lt; &quot;2. Anime Eintragen&quot; &lt;&lt; endl &lt;&lt; &quot;3. Lizens &quot;;
};

void menue_eingabe(){

    cout &lt;&lt; endl;

    string eingabe;
    eingabe = &quot;XX&quot;;

    bool dewahrheit = false;

    while(dewahrheit == false){
    cin &gt;&gt; eingabe;

        if(eingabe.size() == 1){
            if(eingabe == &quot;1&quot;|| eingabe == &quot;2&quot;|| eingabe == &quot;3&quot; ){

                /* DATENBANK AKTIONEN */
                cout &lt;&lt; endl &lt;&lt; &quot;....................DATENBANK.............................\n&quot; &lt;&lt; endl;
                if(eingabe == &quot;1&quot;){
                    dl-&gt;select();
                }else if(eingabe == &quot;2&quot;){
                    cout &lt;&lt; endl &lt;&lt;  &quot;EINFÜGEN&quot; &lt;&lt; endl;
                    dl-&gt;count();

                    //  dl-&gt;insert();
                }

                dewahrheit = true;
            }else{
                cout &lt;&lt; &quot;Du sollst eine Zahl zwischen 1 und 3 eingeben.&quot;;
                eingabe.clear();
            }

        }else{
            eingabe.clear();
            cout &lt;&lt; &quot;Du hast zu viele Zeichen eingegeben&quot;;
        }
    }
} // ENDE menue_eingabe()

};

#endif // STARTMENUE_H_INCLUDED
</code></pre>
<p>main.cpp</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;string&gt;
#include &quot;../Kommandozeilenparameter/kommandozeilenparameter help.h&quot;

#include &lt;sqlite3.h&gt;

#include &quot;startmenue.h&quot;
#include &quot;listmenue.h&quot;

#include &quot;databaselite.h&quot;

using namespace std;

int main(int argc, char* argv[])
{
    cout &lt;&lt; endl &lt;&lt; endl;
    Kommandozeilenparameter_help help;
    help.kontrolle(argc,argv);

    databaselite serie(&amp;argc,argv);
    serie.open();
    startmenue sm(&amp;serie);

    sm.menue_anzeigen();
    sm.menue_eingabe();

    serie.close_database();
    //serie.get_argv();
    //serie.get_argc();

}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/323295/variable-aus-argv-initialisieren-in-einem-static-int</link><generator>RSS for Node</generator><lastBuildDate>Thu, 16 Jul 2026 02:44:03 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/323295.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 25 Jan 2014 00:47:26 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to variable aus **argv initialisieren in einem static int on Sat, 25 Jan 2014 00:47:26 GMT]]></title><description><![CDATA[<p>Moin ich kann der int Variable &quot;versuch&quot; nicht ihren passenden Wert geben <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 />
Zeile 61 error from this location.</p>
<p>Ich häng da schon seit drei Tagen dran <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=":/"
      alt="😕"
    /><br />
Fehler:</p>
<p>databaselite.h|15|error: invalid use of member ‘databaselite::versuch’ in static member function|</p>
<p>und</p>
<p>/home/cseipel/Code::Blocks Kram/GTK/test project/animedata/databaselite.h|61|error: from this location|</p>
<p>Habt Gnade ich bin ein totaler Anfänger ;__;</p>
<p>databaselite.h</p>
<pre><code>#ifndef DATABASELITE_H_INCLUDED
#define DATABASELITE_H_INCLUDED

#include &lt;iostream&gt;
#include &lt;vector&gt;
#include &lt;sqlite3.h&gt;
#include &lt;string&gt;
#include &lt;stdlib.h&gt;
#include &lt;stdio.h&gt;
using namespace std;

class databaselite{
private:

    int versuch;

    static int ca;

    int **argc;
    char  ***argv;

    sqlite3 *db;
    char *zErrMsg = 0;
    int rc;
    char *sql;
    const char* data = &quot;Callback function called&quot;;

public:

/* KONSTRUKTOR */
    databaselite(int *e, char **a){argc = &amp;e; argv = &amp;a;};
/*---------------------------------*/

/* SPIELEREIN */

    void get_argc(){
        cout &lt;&lt; endl &lt;&lt; **argc;
    }       // juhu[0][0] wäre auch möglich

    void get_argv(){ cout &lt;&lt; argv[0][0] &lt;&lt; endl &lt;&lt; &quot;argv&quot;;};
/* ---------------------------------- */

    static int callback(void *data, int argc, char **argv, char **azColName){
        int i;
        for(i=0; i&lt;argc; i++){
            cout &lt;&lt; azColName[i] &lt;&lt; &quot; = &quot; &lt;&lt; argv[i] &lt;&lt; endl;

        }
        cout &lt;&lt; endl;
        return 0;
    }

        static int COUNTcallback(void *data, int argc, char **argv, char **azColName){

        for(int i=0; i&lt;argc; i++){ }
        cout &lt;&lt; endl &lt;&lt; &quot;--&gt;&quot; &lt;&lt; **argv &lt;&lt; endl;
        // EINE ZEILE WEITER UNTEN IST DAS PROBLEM

        versuch = atoi (*argv);

        return 0;
    }

    void ok(){
        rc = sqlite3_exec(db, sql, callback, (void*)data, &amp;zErrMsg);
        if( rc != SQLITE_OK ){
            cout &lt;&lt; &quot;SQL Fehler: &quot; &lt;&lt; zErrMsg;
            sqlite3_free(zErrMsg);
        }else{
      cout &lt;&lt; &quot;Operation wurde erfolgreich ausgeführt\n&quot;;
   }

   }// OK ENDE

    void open(){
            rc = sqlite3_open(&quot;test.db&quot;, &amp;db);

                if( rc ){
                    cout &lt;&lt; &quot;Datenbank öffnen fehlgeschlagen: &quot; &lt;&lt; sqlite3_errmsg(db);

                }else{
                    cerr &lt;&lt; &quot;Datenbank wurde erfolgreich geöffnet\n&quot;;

                }
        // sqlite3_close(db);
    } // ende von open

    void close_database(){
         sqlite3_close(db);
         cout &lt;&lt; endl &lt;&lt; &quot;Datenbank wurde geschlossen&quot;;
    }

    void select(){
        sql = &quot;SELECT * FROM Serien&quot;;
        ok();
    }

    void insert(){
    sql = &quot;INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) &quot;  \
          &quot;VALUES (1, 'Paul', 32, 'California', 20000.00 ); &quot; \
         &quot;INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) &quot;  \
         &quot;VALUES (2, 'Allen', 25, 'Texas', 15000.00 ); &quot;     \
         &quot;INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)&quot; \
         &quot;VALUES (3, 'Teddy', 23, 'Norway', 20000.00 );&quot; \
         &quot;INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)&quot; \
         &quot;VALUES (4, 'Mark', 25, 'Rich-Mond ', 65000.00 );&quot;;

   /* Execute SQL statement */
   rc = sqlite3_exec(db, sql, callback, 0, &amp;zErrMsg);
   if( rc != SQLITE_OK ){
	cout &lt;&lt; &quot;SQL Fehler: &quot;  &lt;&lt; zErrMsg;
      sqlite3_free(zErrMsg);
   }else{
      cout &lt;&lt; &quot;Records created successfully&quot; &lt;&lt; endl;
   }

    } // INSERT ENDING

    void update(){
        sql = &quot;UPDATE COMPANY set SALARY = 25000.00 where ID=1; &quot;;
        ok();
   } // UPDATE ENDE

   void loeschen(){
        sql = &quot;DELETE from COMPANY where ID=2;&quot;;
        ok();
   } // DELETE ENDE

   void count(){
    sql = &quot;SELECT count(*) FROM Serien&quot;;
   /* Execute SQL statement */
    rc = sqlite3_exec(db, sql, COUNTcallback, (void*)data, &amp;zErrMsg);

/*
    if( rc != SQLITE_OK ){
       cerr &lt;&lt; &quot;SQL error: &quot;&lt;&lt;  zErrMsg &lt;&lt; &quot;\n&quot;;
      sqlite3_free(zErrMsg);
   }else{
      fprintf(stdout, &quot;Operation done successfully\n&quot;);
   } */

    }// COUNT

};

#endif // DATABASELITE_H_INCLUDED
</code></pre>
<p>und hier der rest falls ihr ihn braucht.</p>
<p>startmenue.h</p>
<pre><code>#ifndef STARTMENUE_H_INCLUDED
#define STARTMENUE_H_INCLUDED

#include &lt;iostream&gt;
#include &lt;string&gt;

#include &quot;databaselite.h&quot;

/* Für die Eingabe von nur einen Zeichen [X1] */
#include &lt;stdio.h&gt;
#include &lt;string.h&gt;

using namespace std;

#include &quot;menue.h&quot;

class startmenue : public menue{
private:
        databaselite *dl;
public:

    startmenue(databaselite *A){dl = A;};
    ~startmenue(){};

void menue_anzeigen(){
    cout &lt;&lt; &quot;1. Liste ansehen&quot; &lt;&lt; endl &lt;&lt; &quot;2. Anime Eintragen&quot; &lt;&lt; endl &lt;&lt; &quot;3. Lizens &quot;;
};

void menue_eingabe(){

    cout &lt;&lt; endl;

    string eingabe;
    eingabe = &quot;XX&quot;;

    bool dewahrheit = false;

    while(dewahrheit == false){
    cin &gt;&gt; eingabe;

        if(eingabe.size() == 1){
            if(eingabe == &quot;1&quot;|| eingabe == &quot;2&quot;|| eingabe == &quot;3&quot; ){

                /* DATENBANK AKTIONEN */
                cout &lt;&lt; endl &lt;&lt; &quot;....................DATENBANK.............................\n&quot; &lt;&lt; endl;
                if(eingabe == &quot;1&quot;){
                    dl-&gt;select();
                }else if(eingabe == &quot;2&quot;){
                    cout &lt;&lt; endl &lt;&lt;  &quot;EINFÜGEN&quot; &lt;&lt; endl;
                    dl-&gt;count();

                    //  dl-&gt;insert();
                }

                dewahrheit = true;
            }else{
                cout &lt;&lt; &quot;Du sollst eine Zahl zwischen 1 und 3 eingeben.&quot;;
                eingabe.clear();
            }

        }else{
            eingabe.clear();
            cout &lt;&lt; &quot;Du hast zu viele Zeichen eingegeben&quot;;
        }
    }
} // ENDE menue_eingabe()

};

#endif // STARTMENUE_H_INCLUDED
</code></pre>
<p>main.cpp</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;string&gt;
#include &quot;../Kommandozeilenparameter/kommandozeilenparameter help.h&quot;

#include &lt;sqlite3.h&gt;

#include &quot;startmenue.h&quot;
#include &quot;listmenue.h&quot;

#include &quot;databaselite.h&quot;

using namespace std;

int main(int argc, char* argv[])
{
    cout &lt;&lt; endl &lt;&lt; endl;
    Kommandozeilenparameter_help help;
    help.kontrolle(argc,argv);

    databaselite serie(&amp;argc,argv);
    serie.open();
    startmenue sm(&amp;serie);

    sm.menue_anzeigen();
    sm.menue_eingabe();

    serie.close_database();
    //serie.get_argv();
    //serie.get_argc();

}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2379421</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2379421</guid><dc:creator><![CDATA[Tim]]></dc:creator><pubDate>Sat, 25 Jan 2014 00:47:26 GMT</pubDate></item><item><title><![CDATA[Reply to variable aus **argv initialisieren in einem static int on Sat, 25 Jan 2014 01:06:59 GMT]]></title><description><![CDATA[<p>Der unmittelbare Fehler geht doch direkt aus der Fehlermeldung hervor: Die Memberfunktion <code>COUNTcallback</code> ist bei dir static (d.h. sie bezieht sich auf keine konkrete Instanz von <code>databaselite</code> , sondern ist quasi eine freie Funktion, die mit der Klasse assoziiert wird), aber dennoch greifst du auf den nicht-statischen Member <code>versuch</code> zu (also einer Variablen, die zu einer bestimmten Instanz von <code>databaselite</code> gehört). Wie soll das gehen? Die Funktion kann nicht einerseits ohne konkrete Instanz aufrufbar sein, aber gleichzeitig eine konkrete Instanz benötigen.</p>
<p>Insgesamt: Ich glaube, du übernimmst dich gewaltig mit der Aufgabe, üb dich erstmal an etwas Einfacherem. Vor allem vernünftigem C++. Du scheinst leider in den Genuss eines &quot;C++ ist C mit Klassen&quot;-Lehrers gekommen zu sein, der viel von Zeigern erzählt hat. Weder scheinst du diese Zeiger richtig verstanden zu haben, noch würde der Code in dogmatischeren C++ auch nur entfernt so aussehen. Da hättest du so gut wie keine Zeiger, zumindest keine die so direkt sichtbar sind. Und falls doch direkt sichtbar, dann mit ganz klarer Ansage, wie die Besitzverhältnisse sind.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2379422</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2379422</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sat, 25 Jan 2014 01:06:59 GMT</pubDate></item><item><title><![CDATA[Reply to variable aus **argv initialisieren in einem static int on Sat, 25 Jan 2014 02:38:36 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Weder scheinst du diese Zeiger richtig verstanden zu haben, noch würde der Code in dogmatischeren C++ auch nur entfernt so aussehen. Da hättest du so gut wie keine Zeiger, zumindest keine die so direkt sichtbar sind. Und falls doch direkt sichtbar, dann mit ganz klarer Ansage, wie die Besitzverhältnisse sind.</p>
</blockquote>
<p>Das ist schwer, wenn die sqlite-API in &quot;C/C++&quot; d.h. in C gehalten ist und die Schnittstelle so aussieht:</p>
<pre><code class="language-cpp">int sqlite3_open(
      const char *filename,   /* Database filename (UTF-8) */
      sqlite3 **ppDb          /* OUT: SQLite db handle */
    );
    int sqlite3_open16(
      const void *filename,   /* Database filename (UTF-16) */
      sqlite3 **ppDb          /* OUT: SQLite db handle */
    );
    int sqlite3_open_v2(
      const char *filename,   /* Database filename (UTF-8) */
      sqlite3 **ppDb,         /* OUT: SQLite db handle */
      int flags,              /* Flags */
      const char *zVfs        /* Name of VFS module to use */
    );
</code></pre>
<p>Klar, wer sich mit C++ auskennt, kann damit gut umgehen, aber als Anfänger ist es nur zu sehr verlockend, sich diesen Stil anzugewöhnen.</p>
<p>Deshalb rate ich von Datenbankanwendungen erstmal ab, und wenn es unbedingt sein muss, dann empfehle ich <a href="http://soci.sourceforge.net/" rel="nofollow">SOCI</a>.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2379427</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2379427</guid><dc:creator><![CDATA[sqlleichtgemacht]]></dc:creator><pubDate>Sat, 25 Jan 2014 02:38:36 GMT</pubDate></item><item><title><![CDATA[Reply to variable aus **argv initialisieren in einem static int on Sat, 25 Jan 2014 10:44:54 GMT]]></title><description><![CDATA[<p>Es gibt aber auch C++-Wrapper für SQLite, z.B.<br />
<a href="http://www.codeproject.com/Articles/6343/CppSQLite-C-Wrapper-for-SQLite" rel="nofollow">CppSQLite - C++ Wrapper for SQLite</a><br />
<a href="http://sqlitewrapper.kompex-online.com/" rel="nofollow">Kompex SQLite Wrapper for C++</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2379454</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2379454</guid><dc:creator><![CDATA[Th69]]></dc:creator><pubDate>Sat, 25 Jan 2014 10:44:54 GMT</pubDate></item><item><title><![CDATA[Reply to variable aus **argv initialisieren in einem static int on Sat, 25 Jan 2014 12:12:21 GMT]]></title><description><![CDATA[<p>Th69 schrieb:</p>
<blockquote>
<p>Es gibt aber auch C++-Wrapper für SQLite, z.B.<br />
<a href="http://www.codeproject.com/Articles/6343/CppSQLite-C-Wrapper-for-SQLite" rel="nofollow">CppSQLite - C++ Wrapper for SQLite</a><br />
<a href="http://sqlitewrapper.kompex-online.com/" rel="nofollow">Kompex SQLite Wrapper for C++</a></p>
</blockquote>
<p>Äh ja, sie existieren.</p>
<p>Die erste empfiehlt solchen Code:</p>
<pre><code class="language-cpp">char buf[128];
            sprintf(buf, 
       &quot;insert into emp (empname) values ('Empname%06d');&quot;, i+1);
            db.execDML(buf);
            cout &lt;&lt; &quot; primary key: &quot; &lt;&lt; db.lastRowId() &lt;&lt; endl;
</code></pre>
<p>Bei der zweiten sieht das so aus:</p>
<pre><code class="language-cpp">Kompex::SQLiteDatabase *pDatabase = new Kompex::SQLiteDatabase(&quot;test.db&quot;, SQLITE_OPEN_READWRITE, 0);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2379464</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2379464</guid><dc:creator><![CDATA[sqlleichtgemacht]]></dc:creator><pubDate>Sat, 25 Jan 2014 12:12:21 GMT</pubDate></item><item><title><![CDATA[Reply to variable aus **argv initialisieren in einem static int on Sat, 25 Jan 2014 20:51:30 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Der unmittelbare Fehler geht doch direkt aus der Fehlermeldung hervor: Die Memberfunktion <code>COUNTcallback</code> ist bei dir static (d.h. sie bezieht sich auf keine konkrete Instanz von <code>databaselite</code> , sondern ist quasi eine freie Funktion, die mit der Klasse assoziiert wird), aber dennoch greifst du auf den nicht-statischen Member <code>versuch</code> zu (also einer Variablen, die zu einer bestimmten Instanz von <code>databaselite</code> gehört). Wie soll das gehen? Die Funktion kann nicht einerseits ohne konkrete Instanz aufrufbar sein, aber gleichzeitig eine konkrete Instanz benötigen.</p>
<p>Insgesamt: Ich glaube, du übernimmst dich gewaltig mit der Aufgabe, üb dich erstmal an etwas Einfacherem. Vor allem vernünftigem C++. Du scheinst leider in den Genuss eines &quot;C++ ist C mit Klassen&quot;-Lehrers gekommen zu sein, der viel von Zeigern erzählt hat. Weder scheinst du diese Zeiger richtig verstanden zu haben, noch würde der Code in dogmatischeren C++ auch nur entfernt so aussehen. Da hättest du so gut wie keine Zeiger, zumindest keine die so direkt sichtbar sind. Und falls doch direkt sichtbar, dann mit ganz klarer Ansage, wie die Besitzverhältnisse sind.</p>
</blockquote>
<p>Also kann ich über eine Static Funktion unmöglich werte außerhalb von Static ansprechen selbst wenn ich extra Pointer verwende :(?</p>
<p>Das heißt ich muss diese Funktion zum laufen bringen ohne das da Static steht <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="🙄"
    /> Da bin ich echt überfragt wie ich das jetzt hinzauber.<br />
Und ja ich übernehme mich wirklich das ist meine Art zu lernen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_savoring_food"
      title=":yum:"
      alt="😋"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2379599</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2379599</guid><dc:creator><![CDATA[Tim]]></dc:creator><pubDate>Sat, 25 Jan 2014 20:51:30 GMT</pubDate></item><item><title><![CDATA[Reply to variable aus **argv initialisieren in einem static int on Sat, 25 Jan 2014 22:11:50 GMT]]></title><description><![CDATA[<p>Tim schrieb:</p>
<blockquote>
<p>Also kann ich über eine Static Funktion unmöglich werte außerhalb von Static ansprechen selbst wenn ich extra Pointer verwende :(?</p>
</blockquote>
<p><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="😕"
    /> Erklär mal, was du denkst, was static bedeutet. Da das Wort je nach Kontext was anderes bedeutet, gehört zu einer Erklärung natürlich auch dazu, was es in welchem Zusammenhang bedeutet.</p>
<blockquote>
<p>Und ja ich übernehme mich wirklich das ist meine Art zu lernen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_savoring_food"
      title=":yum:"
      alt="😋"
    /></p>
</blockquote>
<p>Dann lass das doch. Du scheinst sehr verwirrt zu sein und weniger als die Hälfte der Sachen zu verstehen, die du da überhaupt tust. Deswegen funktioniert es auch nicht.<br />
Ich nehme mal an, hier soll ein konkretes Problem gelöst werden. Wenn du den SQL-Kram erst einmal komplett ignorierst und anhand des üblichen Lernprogramms erst einmal die Grundlagen lernst, dann lösen sich deine Probleme nach ein paar Wochen von ganz alleine. Wenn du ohne Ahnung was du tust dein Programm weiter schreibst, dann kommt nur Murks dabei raus und du lernst dabei noch nicht einmal, wie es richtig geht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2379607</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2379607</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sat, 25 Jan 2014 22:11:50 GMT</pubDate></item><item><title><![CDATA[Reply to variable aus **argv initialisieren in einem static int on Sat, 25 Jan 2014 22:38:30 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Erklär mal, was du denkst, was static bedeutet.</p>
</blockquote>
<p>Static ist das, was man hinschreibt, wenn man ein Callback haben möchte und der Compiler meckert <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/3798">@Tim</a>:<br />
Du musst das Objekt, auf dem du arbeiten möchtest, über den data-Parameter der Callback-Funktion hineinreichen. Du hast dir anscheinend irgendwas zusammengereimt, wozu das data gut ist, das war Unsinn. Es dürfte ungefähr so gehen (vom Prinzip her, ich hab jetzt nicht gecheckt, welche Callback-Schnittstelle SQLite tatsächlich erwartet...)</p>
<pre><code class="language-cpp">void count(){
      sql = &quot;SELECT count(*) FROM Serien&quot;;
      /* Execute SQL statement */
      rc = sqlite3_exec(db, sql, COUNTcallback, this, &amp;zErrMsg);
   }// COUNT

   static int COUNTcallback(void *data, int argc, char **argv, char **azColName){
        databaselite* instance = static_cast&lt;databaselite*&gt;(data);

        for(int i=0; i&lt;argc; i++){ }
        cout &lt;&lt; endl &lt;&lt; &quot;--&gt;&quot; &lt;&lt; **argv &lt;&lt; endl;
        // EINE ZEILE WEITER UNTEN IST DAS PROBLEM

        instance-&gt;versuch = atoi (*argv);

        return 0;
    }
</code></pre>
<p>Falls du nicht weißt, was der this-Zeiger ist, schau dir das zuerst an, sonst verstehst du nicht, was ich da gemacht habe.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2379610</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2379610</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Sat, 25 Jan 2014 22:38:30 GMT</pubDate></item><item><title><![CDATA[Reply to variable aus **argv initialisieren in einem static int on Mon, 27 Jan 2014 20:46:26 GMT]]></title><description><![CDATA[<p>Bashar schrieb:</p>
<blockquote>
<p>SeppJ schrieb:</p>
<blockquote>
<p>Erklär mal, was du denkst, was static bedeutet.</p>
</blockquote>
<p>Static ist das, was man hinschreibt, wenn man ein Callback haben möchte und der Compiler meckert <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/3798">@Tim</a>:<br />
Du musst das Objekt, auf dem du arbeiten möchtest, über den data-Parameter der Callback-Funktion hineinreichen. Du hast dir anscheinend irgendwas zusammengereimt, wozu das data gut ist, das war Unsinn. Es dürfte ungefähr so gehen (vom Prinzip her, ich hab jetzt nicht gecheckt, welche Callback-Schnittstelle SQLite tatsächlich erwartet...)</p>
<pre><code class="language-cpp">void count(){
      sql = &quot;SELECT count(*) FROM Serien&quot;;
      /* Execute SQL statement */
      rc = sqlite3_exec(db, sql, COUNTcallback, this, &amp;zErrMsg);
   }// COUNT
 
   static int COUNTcallback(void *data, int argc, char **argv, char **azColName){
        databaselite* instance = static_cast&lt;databaselite*&gt;(data);

        for(int i=0; i&lt;argc; i++){ }
        cout &lt;&lt; endl &lt;&lt; &quot;--&gt;&quot; &lt;&lt; **argv &lt;&lt; endl;
        // EINE ZEILE WEITER UNTEN IST DAS PROBLEM
 
        instance-&gt;versuch = atoi (*argv);
 
        return 0;
    }
</code></pre>
<p>Falls du nicht weißt, was der this-Zeiger ist, schau dir das zuerst an, sonst verstehst du nicht, was ich da gemacht habe.</p>
</blockquote>
<p>Sry das ich mich so spät melde ich war schulisch leider stark abgelenkt.</p>
<p>Das mit dem This Zeiger ist ne super Idee aber leider komme ich nun zu einem alten Problem wieder zurück.</p>
<p>Ich bekomm, wenn ich deinen Code ausführe am ende immer ein Segmentation fault raus.<br />
<a href="http://de.wikipedia.org/wiki/Schutzverletzung" rel="nofollow">http://de.wikipedia.org/wiki/Schutzverletzung</a></p>
<p>Was das ist glaube ich zu wissen aber naja ich arbeite mal weiter und werd am besten Morgen nochmal alles schön ordentlich machen.<br />
Auch wenn ich mir das wirklich schwer bei sqlite3 vorstelle.</p>
<p>NIEMALS AUFGEBEN <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/2380019</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2380019</guid><dc:creator><![CDATA[Tim]]></dc:creator><pubDate>Mon, 27 Jan 2014 20:46:26 GMT</pubDate></item><item><title><![CDATA[Reply to variable aus **argv initialisieren in einem static int on Mon, 27 Jan 2014 20:48:06 GMT]]></title><description><![CDATA[<p>Wäre nicht die einfachste Lösung anstatt schwachsinnig von int main(argc,argv) zu nutzen ein eigenes in der Klasse zu erstellen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    />?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2380021</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2380021</guid><dc:creator><![CDATA[Tim]]></dc:creator><pubDate>Mon, 27 Jan 2014 20:48:06 GMT</pubDate></item><item><title><![CDATA[Reply to variable aus **argv initialisieren in einem static int on Mon, 27 Jan 2014 21:01:50 GMT]]></title><description><![CDATA[<p>Tim schrieb:</p>
<blockquote>
<p>Wäre nicht die einfachste Lösung anstatt schwachsinnig von int main(argc,argv) zu nutzen ein eigenes in der Klasse zu erstellen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    />?</p>
</blockquote>
<p>Falls du noch ein paar <a href="http://de.wikipedia.org/wiki/Objekt_%28Grammatik%29" rel="nofollow">Objekte</a> in deinen Satz einfügst, kann man vielleicht sogar verstehen, was du wissen möchtest.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2380031</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2380031</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Mon, 27 Jan 2014 21:01:50 GMT</pubDate></item><item><title><![CDATA[Reply to variable aus **argv initialisieren in einem static int on Mon, 27 Jan 2014 23:18:00 GMT]]></title><description><![CDATA[<p>Entschuldige ich wurde von Freunden zum Döner futtern abgeholt und hab nicht nachgelesen was ich da vorhin getippt habe.<br />
Aber ich hab immerhin eine freudige Nachricht.</p>
<p>Ich hab mein Problem selbstständig gelößt.</p>
<pre><code>#ifndef DATABASE_H_INCLUDED
#define DATABASE_H_INCLUDED
#include &lt;sqlite3.h&gt;
#include &lt;iostream&gt;

using namespace std;

class database{
private:
    int argc;
    char* argv[];
    sqlite3 *db;
    char *zErrMsg = 0;
    int rc;
    char *sql;
    const char* data = &quot;Callback function called&quot;;

public:

   //  database(sqlite3 *wusch){db = wusch;};
    static int callback(void *data, int argc, char **argv, char **azColName){
        int i;
       // cout &lt;&lt; &quot;CALLBACK FUNKTION AUFGERUFEN\n&quot;;
        for(i=0; i&lt;argc; i++){
            cout &lt;&lt; azColName[i] &lt;&lt; &quot; = &quot; &lt;&lt; argv[i] &lt;&lt; &quot;\n&quot;;
        }
        cout &lt;&lt; &quot;\n&quot;;
        return 0;
    }

    void open_database(){
        rc = sqlite3_open(&quot;test.db&quot;, &amp;db);

        if( rc ){
            cout &lt;&lt; &quot;Datenbank kann nicht geöffnet werden: &quot; &lt;&lt; sqlite3_errmsg(db);
        }else{
            cout &lt;&lt;  &quot;Datenbank wurde erfolgreich geöffnet\n&quot;;
    }
    }

    void select(){
           sql = &quot;SELECT * from Serien&quot;;

            /* Execute SQL statement */
            rc = sqlite3_exec(db, sql, callback, (void*)data, &amp;zErrMsg);
            if( rc != SQLITE_OK ){
                cout &lt;&lt; &quot;SQL error: &quot; &lt;&lt; zErrMsg &lt;&lt; &quot;\n&quot;;
                sqlite3_free(zErrMsg);
            }else{
            cout &lt;&lt; &quot;Operation wurde erfolgreich ausgeführt\n&quot;;
            }
    }

    void count(){
            sql = &quot;SELECT count(*) FROM Serien&quot;;
            /* Execute SQL statement */
            rc = sqlite3_exec(db, sql, callback, (void*)data, &amp;zErrMsg);
            if( rc != SQLITE_OK ){
                cout &lt;&lt; &quot;SQL error: &quot; &lt;&lt; zErrMsg &lt;&lt; &quot;\n&quot;;
                sqlite3_free(zErrMsg);
            }else{
            cout &lt;&lt; &quot;Operation wurde erfolgreich ausgeführt\n&quot;;
            }
    }

};

#endif // DATABASE_H_INCLUDED
</code></pre>
<p>Das ist zu 100% nicht perfekt aber es funktioniert <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>
]]></description><link>https://www.c-plusplus.net/forum/post/2380057</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2380057</guid><dc:creator><![CDATA[Tim]]></dc:creator><pubDate>Mon, 27 Jan 2014 23:18:00 GMT</pubDate></item><item><title><![CDATA[Reply to variable aus **argv initialisieren in einem static int on Mon, 27 Jan 2014 23:26:18 GMT]]></title><description><![CDATA[<p>Naja &quot;gelöst&quot; ist da wohl relativ. Du hast einfach den schwierigen Teil weggelöscht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2380058</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2380058</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Mon, 27 Jan 2014 23:26:18 GMT</pubDate></item><item><title><![CDATA[Reply to variable aus **argv initialisieren in einem static int on Tue, 28 Jan 2014 17:52:24 GMT]]></title><description><![CDATA[<p>Bashar schrieb:</p>
<blockquote>
<p>Naja &quot;gelöst&quot; ist da wohl relativ. Du hast einfach den schwierigen Teil weggelöscht.</p>
</blockquote>
<p>Das ist wahr aber mir war einfach nicht klar wie unnützt schwer ich es mir vor ner Woche gemacht habe.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2380258</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2380258</guid><dc:creator><![CDATA[Tim]]></dc:creator><pubDate>Tue, 28 Jan 2014 17:52:24 GMT</pubDate></item><item><title><![CDATA[Reply to variable aus **argv initialisieren in einem static int on Tue, 28 Jan 2014 17:58:48 GMT]]></title><description><![CDATA[<p>Stimmt, könnte ja sein, dass man aus Versehen was lernt. <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=":/"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2380260</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2380260</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Tue, 28 Jan 2014 17:58:48 GMT</pubDate></item><item><title><![CDATA[Reply to variable aus **argv initialisieren in einem static int on Wed, 29 Jan 2014 16:08:03 GMT]]></title><description><![CDATA[<p>An Zeile 29 merk ich. Ich hab immer noch das selbe Problem <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="🙄"
    /><br />
Peinlich peinlich von mir.</p>
<p>Ich lese jetzt zur Sicherheit nochmal nach wofür Static steht auch, wenn ich nicht glaube das mir das weiter hilft.</p>
<pre><code>#ifndef DATABASE_H_INCLUDED
#define DATABASE_H_INCLUDED
#include &lt;sqlite3.h&gt;
#include &lt;iostream&gt;

using namespace std;

class database{
private:
    int argc;
    char* argv[];
    sqlite3 *db;
    char *zErrMsg = 0;
    int rc;
    char *sql;
    const char* data = &quot;Callback function called&quot;;

    int dusche;

public:

   //  database(sqlite3 *wusch){db = wusch;};
    static int callback(void *data, int argc, char **argv, char **azColName){
        int i;
       // cout &lt;&lt; &quot;CALLBACK FUNKTION AUFGERUFEN\n&quot;;
        for(i=0; i&lt;argc; i++){
            cout &lt;&lt; azColName[i] &lt;&lt; &quot; = &quot; &lt;&lt; argv[i] &lt;&lt; &quot;\n&quot;;
        }
        dusche = 33;
        cout &lt;&lt; &quot;\n&quot;;
        return 0;
    }

    void open_database(){
        rc = sqlite3_open(&quot;test.db&quot;, &amp;db);

        if( rc ){
            cout &lt;&lt; &quot;Datenbank kann nicht geöffnet werden: &quot; &lt;&lt; sqlite3_errmsg(db);
        }else{
            cout &lt;&lt;  &quot;Datenbank wurde erfolgreich geöffnet\n&quot;;
    }
    }

    void select(){
           sql = &quot;SELECT * from Serien&quot;;

            /* Execute SQL statement */
            rc = sqlite3_exec(db, sql, callback, (void*)data, &amp;zErrMsg);
            if( rc != SQLITE_OK ){
                cout &lt;&lt; &quot;SQL error: &quot; &lt;&lt; zErrMsg &lt;&lt; &quot;\n&quot;;
                sqlite3_free(zErrMsg);
            }else{
            cout &lt;&lt; &quot;Operation wurde erfolgreich ausgeführt\n&quot;;
            }
    }

    void count(){
            sql = &quot;SELECT count(*) FROM Serien&quot;;
            /* Execute SQL statement */
            rc = sqlite3_exec(db, sql, callback, (void*)data, &amp;zErrMsg);
            if( rc != SQLITE_OK ){
                cout &lt;&lt; &quot;SQL error: &quot; &lt;&lt; zErrMsg &lt;&lt; &quot;\n&quot;;
                sqlite3_free(zErrMsg);
            }else{
            cout &lt;&lt; &quot;Operation wurde erfolgreich ausgeführt\n&quot;;
            }
    }

};

#endif // DATABASE_H_INCLUDED
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2380446</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2380446</guid><dc:creator><![CDATA[Tim]]></dc:creator><pubDate>Wed, 29 Jan 2014 16:08:03 GMT</pubDate></item><item><title><![CDATA[Reply to variable aus **argv initialisieren in einem static int on Wed, 29 Jan 2014 17:46:35 GMT]]></title><description><![CDATA[<p>Hab leider nichts neues für mich aus meinem Buch+Google über Static erfahren.</p>
<p>Ich weiß nur eines.<br />
Ich hab kein Plan wieso ich in der Ccallback Funktion keine Variable aus private oder public ansprechen kann. Was für ein Weg gibt es das Ergebnis von Ccallback in eine Variable zu speichern?</p>
<p>Zeile 42 &lt;---</p>
<pre><code>#ifndef DATABASE_H_INCLUDED
#define DATABASE_H_INCLUDED
#include &lt;sqlite3.h&gt;
#include &lt;iostream&gt;
#include &lt;stdlib.h&gt;

using namespace std;

class database{
private:
    int argc;
    char* argv[];
    sqlite3 *db;
    char *zErrMsg = 0;
    int rc;
    char *sql;
    const char* data = &quot;Callback function called&quot;;
   int domian;

public:

   //  database(sqlite3 *wusch){db = wusch;};
    static int callback(void *data, int argc, char **argv, char **azColName){
        int i;
       // cout &lt;&lt; &quot;CALLBACK FUNKTION AUFGERUFEN\n&quot;;
        for(i=0; i&lt;argc; i++){
            cout &lt;&lt; azColName[i] &lt;&lt; &quot; = &quot; &lt;&lt; argv[i] &lt;&lt; &quot;\n&quot;;
        }
        cout &lt;&lt; &quot;\n&quot;;
        return 0;
    }

        static int Ccallback(void *data, int argc, char **argv, char **azColName){
        int i;
       // cout &lt;&lt; &quot;CALLBACK FUNKTION AUFGERUFEN\n&quot;;
        for(i=0; i&lt;argc; i++){
            cout &lt;&lt; azColName[i] &lt;&lt; &quot; = &quot; &lt;&lt; argv[i] &lt;&lt; &quot;\n&quot;;
        }
        cout &lt;&lt; &quot;\n&quot;;
        domian = atoi(argv[0]);

        return 0;
    }

    void open_database(){
        rc = sqlite3_open(&quot;test.db&quot;, &amp;db);

        if( rc ){
            cout &lt;&lt; &quot;Datenbank kann nicht geöffnet werden: &quot; &lt;&lt; sqlite3_errmsg(db);
        }else{
            cout &lt;&lt;  &quot;Datenbank wurde erfolgreich geöffnet\n&quot;;
    }
    }

    void select(){
           sql = &quot;SELECT * from Serien&quot;;

            /* Execute SQL statement */
            rc = sqlite3_exec(db, sql, callback, (void*)data, &amp;zErrMsg);
            if( rc != SQLITE_OK ){
                cout &lt;&lt; &quot;SQL error: &quot; &lt;&lt; zErrMsg &lt;&lt; &quot;\n&quot;;
                sqlite3_free(zErrMsg);
            }else{
            cout &lt;&lt; &quot;Operation wurde erfolgreich ausgeführt\n&quot;;
            }
    }

    void count(){
            sql = &quot;SELECT count(*) FROM Serien&quot;;
           /* Execute SQL statement */
            rc = sqlite3_exec(db, sql, Ccallback, (void*)data, &amp;zErrMsg);
            if( rc != SQLITE_OK ){
                cout &lt;&lt; &quot;SQL error: &quot; &lt;&lt; zErrMsg &lt;&lt; &quot;\n&quot;;
                sqlite3_free(zErrMsg);
            }else{
            cout &lt;&lt; &quot;Operation wurde erfolgreich ausgeführt\n&quot;;
            }
    }

    void get_domian(){
        cout &lt;&lt; &quot;\nDOMIAN: &quot; &lt;&lt; domian;
    }

};

#endif // DATABASE_H_INCLUDED
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2380475</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2380475</guid><dc:creator><![CDATA[Tim]]></dc:creator><pubDate>Wed, 29 Jan 2014 17:46:35 GMT</pubDate></item><item><title><![CDATA[Reply to variable aus **argv initialisieren in einem static int on Wed, 29 Jan 2014 17:57:15 GMT]]></title><description><![CDATA[<p>Tim schrieb:</p>
<blockquote>
<p>Hab leider nichts neues für mich aus meinem Buch+Google über Static erfahren.</p>
</blockquote>
<p>Was hast du denn erfahren? static hat in C++ so ca. 5 verschiedene Bedeutungen, von denen dich gerade die für Membervariablen und Memberfunktionen interessiert. Das wesentliche über static weißt du, wenn du diese Frage beantworten kannst:</p>
<blockquote>
<p>[...] wieso ich in der Ccallback Funktion keine Variable aus private oder public ansprechen kann.</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/2380477</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2380477</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Wed, 29 Jan 2014 17:57:15 GMT</pubDate></item><item><title><![CDATA[Reply to variable aus **argv initialisieren in einem static int on Wed, 29 Jan 2014 19:06:34 GMT]]></title><description><![CDATA[<p>Bashar schrieb:</p>
<blockquote>
<p>Tim schrieb:</p>
<blockquote>
<p>Hab leider nichts neues für mich aus meinem Buch+Google über Static erfahren.</p>
</blockquote>
<p>Was hast du denn erfahren? static hat in C++ so ca. 5 verschiedene Bedeutungen, von denen dich gerade die für Membervariablen und Memberfunktionen interessiert. Das wesentliche über static weißt du, wenn du diese Frage beantworten kannst:</p>
<blockquote>
<p>[...] wieso ich in der Ccallback Funktion keine Variable aus private oder public ansprechen kann.</p>
</blockquote>
</blockquote>
<p>Naja wenn ich Static vor ner Variable oder Funktion schreibe kann ich die nur in der selben Datei ansprechen.</p>
<p>Und bei Static Varibalen bzw. Funktionen wo man ein Static vorne dran schreibt bleibt die Variabel/Rückgabewert erhalten.</p>
<pre><code>#include &lt;iostream&gt;

using namespace std;

int counter(void);

int main()
{
    counter();
    counter();
    counter();
    int dumm;
    dumm = counter();
    cout &lt;&lt; &quot;dumm ist: &quot; &lt;&lt; dumm;
    return 0;
}

int counter(void){
    static int ival;
    cout &lt;&lt; &quot;ival : &quot; &lt;&lt; ival &lt;&lt; endl;
    ++ival;
    return ival;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2380492</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2380492</guid><dc:creator><![CDATA[Tim]]></dc:creator><pubDate>Wed, 29 Jan 2014 19:06:34 GMT</pubDate></item><item><title><![CDATA[Reply to variable aus **argv initialisieren in einem static int on Wed, 29 Jan 2014 19:26:30 GMT]]></title><description><![CDATA[<p>Ja, diese Bedeutungen von static gibt es auch. Wie gesagt, 5.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2380498</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2380498</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Wed, 29 Jan 2014 19:26:30 GMT</pubDate></item><item><title><![CDATA[Reply to variable aus **argv initialisieren in einem static int on Wed, 29 Jan 2014 20:58:38 GMT]]></title><description><![CDATA[<p>Bashar schrieb:</p>
<blockquote>
<p>Ja, diese Bedeutungen von static gibt es auch. Wie gesagt, 5.</p>
</blockquote>
<p>Wie soll ich sowas den jetzt aufzählen am Ende fehlt doch eh noch irgendwas xD<br />
Mach ich mal weiter fsosfjfiosjiogjiogioggigsggo0</p>
<p>main.cpp</p>
<pre><code>#include &lt;iostream&gt;
#include &quot;ichbinweiblich.h&quot;

using namespace std;

int sagtesmirdocheinfach::ival=0;

int main()
{

    cout &lt;&lt; sagtesmirdocheinfach::langweilig(); // 1
    cout &lt;&lt; sagtesmirdocheinfach::langweilig();
    cout &lt;&lt; sagtesmirdocheinfach::langweilig();

    sagtesmirdocheinfach googlenutzerwuerdeneseuchdanken;
    googlenutzerwuerdeneseuchdanken.get_ival();
    googlenutzerwuerdeneseuchdanken.get_ival();

    cout &lt;&lt; endl &lt;&lt; sagtesmirdocheinfach::return_ival(); //2

// ka was ich noch nicht erwähnt habe

    return 0;
}
</code></pre>
<p>ichbinweiblich.h</p>
<pre><code>#ifndef ICHBINWEIBLICH_H_INCLUDED
#define ICHBINWEIBLICH_H_INCLUDED
#include &lt;iostream&gt;
using  namespace std;

class sagtesmirdocheinfach{
public:
    sagtesmirdocheinfach(){ ival++; };
    static int langweilig(){return ival;}

    void get_ival(){
        cout &lt;&lt; ival &lt;&lt; endl;
    }

    static int return_ival(){
        return ival;
    }

private:
    static int ival;
};

#endif // ICHBINWEIBLICH_H_INCLUDED
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2380512</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2380512</guid><dc:creator><![CDATA[Tim]]></dc:creator><pubDate>Wed, 29 Jan 2014 20:58:38 GMT</pubDate></item><item><title><![CDATA[Reply to variable aus **argv initialisieren in einem static int on Wed, 29 Jan 2014 21:32:15 GMT]]></title><description><![CDATA[<p>Die Fehlermeldung zu Zeile 8 macht für mich keinen Sinn.</p>
<blockquote>
<p>/home/cseipel/Code::Blocks Kram/GTK/test project/datenbankexperiment/main.cpp|8|error: invalid use of qualified-name ‘database::ival’|<br />
||=== Build failed: 1 error(s), 2 warning(s) (0 minute(s), 0 second(s)) ===|</p>
</blockquote>
<p>main.cpp</p>
<pre><code>#include &lt;iostream&gt;
#include &quot;database.h&quot;
using namespace std;

int main()
{
    cout &lt;&lt; &quot;Hello world!&quot; &lt;&lt; endl;
   int Ddatabase::ival=0;

   // int database::domian=0;
//    int sagtesmirdocheinfach::ival=0;

    Ddatabase anime;

    anime.open_database();
    anime.select();
    anime.count();
//    anime.get_domian();
   // anime.insert();

    return 0;
}
</code></pre>
<p>database.h</p>
<pre><code>#ifndef DATABASE_H_INCLUDED
#define DATABASE_H_INCLUDED
#include &lt;sqlite3.h&gt;
#include &lt;iostream&gt;
#include &lt;stdlib.h&gt;

using namespace std;

class Ddatabase{
private:
    int argc;
    char* argv[];
    sqlite3 *db;
    char *zErrMsg = 0;
    int rc;
    char *sql;
    const char* data = &quot;Callback function called&quot;;

    static int ival;

public:

    Ddatabase(){ ival++; };
    static int langweilig(){return ival;}

  //   sagtesmirdocheinfach(){ ival++; };

   //  database(sqlite3 *wusch){db = wusch;};
    static int callback(void *data, int argc, char **argv, char **azColName){
        int i;
       // cout &lt;&lt; &quot;CALLBACK FUNKTION AUFGERUFEN\n&quot;;
        for(i=0; i&lt;argc; i++){
            cout &lt;&lt; azColName[i] &lt;&lt; &quot; = &quot; &lt;&lt; argv[i] &lt;&lt; &quot;\n&quot;;
        }
        cout &lt;&lt; &quot;\n&quot;;
        return 0;
    }

        static int Ccallback(void *data, int argc, char **argv, char **azColName){
        int i;
       // cout &lt;&lt; &quot;CALLBACK FUNKTION AUFGERUFEN\n&quot;;
        for(i=0; i&lt;argc; i++){
            cout &lt;&lt; azColName[i] &lt;&lt; &quot; = &quot; &lt;&lt; argv[i] &lt;&lt; &quot;\n&quot;;
        }
        cout &lt;&lt; &quot;\n&quot;;

        return 0;
    }

    void open_database(){
        rc = sqlite3_open(&quot;test.db&quot;, &amp;db);

        if( rc ){
            cout &lt;&lt; &quot;Datenbank kann nicht geöffnet werden: &quot; &lt;&lt; sqlite3_errmsg(db);
        }else{
            cout &lt;&lt;  &quot;Datenbank wurde erfolgreich geöffnet\n&quot;;
    }
    }

    void select(){
           sql = &quot;SELECT * from Serien&quot;;

            /* Execute SQL statement */
            rc = sqlite3_exec(db, sql, callback, (void*)data, &amp;zErrMsg);
            if( rc != SQLITE_OK ){
                cout &lt;&lt; &quot;SQL error: &quot; &lt;&lt; zErrMsg &lt;&lt; &quot;\n&quot;;
                sqlite3_free(zErrMsg);
            }else{
            cout &lt;&lt; &quot;Operation wurde erfolgreich ausgeführt\n&quot;;
            }
    }

    void count(){
            sql = &quot;SELECT count(*) FROM Serien&quot;;
           /* Execute SQL statement */
            rc = sqlite3_exec(db, sql, Ccallback, (void*)data, &amp;zErrMsg);
            if( rc != SQLITE_OK ){
                cout &lt;&lt; &quot;SQL error: &quot; &lt;&lt; zErrMsg &lt;&lt; &quot;\n&quot;;
                sqlite3_free(zErrMsg);
            }else{
            cout &lt;&lt; &quot;Operation wurde erfolgreich ausgeführt\n&quot;;
            }
    }

/*    void get_domian(){
        cout &lt;&lt; &quot;\nDOMIAN: &quot; &lt;&lt; domian;
    } */

};

#endif // DATABASE_H_INCLUDED
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2380518</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2380518</guid><dc:creator><![CDATA[Tim]]></dc:creator><pubDate>Wed, 29 Jan 2014 21:32:15 GMT</pubDate></item><item><title><![CDATA[Reply to variable aus **argv initialisieren in einem static int on Wed, 29 Jan 2014 22:14:32 GMT]]></title><description><![CDATA[<p>Tim schrieb:</p>
<blockquote>
<p>Die Fehlermeldung zu Zeile 8 macht für mich keinen Sinn.</p>
<blockquote>
<p>/home/cseipel/Code::Blocks Kram/GTK/test project/datenbankexperiment/main.cpp|8|error: invalid use of qualified-name ‘database::ival’|<br />
||=== Build failed: 1 error(s), 2 warning(s) (0 minute(s), 0 second(s)) ===|</p>
</blockquote>
</blockquote>
<p>Wieso? Du versuchst quasi eine globale Variable lokal in einer Funktion zu definieren. Das kann doch nicht gehen.</p>
<p>Die Definition eines statischen Klassenmembers gehört in den globalen Gültigkeitsbereich. Mach noch eine database.cpp, definier dort die Variable, Link das Ergebnis zum Gesamtprogramm.</p>
<p>Den Rest des Codes habe ich mir jetzt nicht angesehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2380521</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2380521</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 29 Jan 2014 22:14:32 GMT</pubDate></item><item><title><![CDATA[Reply to variable aus **argv initialisieren in einem static int on Wed, 29 Jan 2014 22:35:37 GMT]]></title><description><![CDATA[<p>Tim schrieb:</p>
<blockquote>
<p>Bashar schrieb:</p>
<blockquote>
<p>Ja, diese Bedeutungen von static gibt es auch. Wie gesagt, 5.</p>
</blockquote>
<p>Wie soll ich sowas den jetzt aufzählen am Ende fehlt doch eh noch irgendwas xD<br />
Mach ich mal weiter fsosfjfiosjiogjiogioggigsggo0</p>
<p>main.cpp</p>
<pre><code>#include &lt;iostream&gt;
#include &quot;ichbinweiblich.h&quot;

using namespace std;

int sagtesmirdocheinfach::ival=0;

int main()
{

    cout &lt;&lt; sagtesmirdocheinfach::langweilig(); // 1
    cout &lt;&lt; sagtesmirdocheinfach::langweilig();
    cout &lt;&lt; sagtesmirdocheinfach::langweilig();

    sagtesmirdocheinfach googlenutzerwuerdeneseuchdanken;
    googlenutzerwuerdeneseuchdanken.get_ival();
    googlenutzerwuerdeneseuchdanken.get_ival();

    cout &lt;&lt; endl &lt;&lt; sagtesmirdocheinfach::return_ival(); //2

// ka was ich noch nicht erwähnt habe

    return 0;
}
</code></pre>
<p>ichbinweiblich.h</p>
<pre><code>#ifndef ICHBINWEIBLICH_H_INCLUDED
#define ICHBINWEIBLICH_H_INCLUDED
#include &lt;iostream&gt;
using  namespace std;

class sagtesmirdocheinfach{
public:
    sagtesmirdocheinfach(){ ival++; };
    static int langweilig(){return ival;}

    void get_ival(){
        cout &lt;&lt; ival &lt;&lt; endl;
    }

    static int return_ival(){
        return ival;
    }

private:
    static int ival;
};

#endif // ICHBINWEIBLICH_H_INCLUDED
</code></pre>
</blockquote>
<p>rofl, made my day.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2380526</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2380526</guid><dc:creator><![CDATA[Fytch]]></dc:creator><pubDate>Wed, 29 Jan 2014 22:35:37 GMT</pubDate></item><item><title><![CDATA[Reply to variable aus **argv initialisieren in einem static int on Thu, 30 Jan 2014 23:13:08 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Tim schrieb:</p>
<blockquote>
<p>Die Fehlermeldung zu Zeile 8 macht für mich keinen Sinn.</p>
<blockquote>
<p>/home/cseipel/Code::Blocks Kram/GTK/test project/datenbankexperiment/main.cpp|8|error: invalid use of qualified-name ‘database::ival’|<br />
||=== Build failed: 1 error(s), 2 warning(s) (0 minute(s), 0 second(s)) ===|</p>
</blockquote>
</blockquote>
<p>Wieso? Du versuchst quasi eine globale Variable lokal in einer Funktion zu definieren. Das kann doch nicht gehen.</p>
<p>Die Definition eines statischen Klassenmembers gehört in den globalen Gültigkeitsbereich. Mach noch eine database.cpp, definier dort die Variable, Link das Ergebnis zum Gesamtprogramm.</p>
<p>Den Rest des Codes habe ich mir jetzt nicht angesehen.</p>
</blockquote>
<p>Das hab ich mir Heute Vormittag auch gedacht als ich wieder auf den Code geguckt habe <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /> Jetzt funktioniert der Mist mal endlich wirklich. Ich hoffe dieser Thread geht in die Geschichte des Forums ein!!!!!! Mal ganz abgesehn davon das ich echt froh bin das der Mist den ich hier unfreiwillig verzapft habe &quot;relativ&quot; anonym ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2380687</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2380687</guid><dc:creator><![CDATA[Tim]]></dc:creator><pubDate>Thu, 30 Jan 2014 23:13:08 GMT</pubDate></item></channel></rss>