Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    4

    C++ utilizzare una classe in una thread

    Ciao a tutti

    ho creato una classe e l'ho istanziata in un modulo (main). dallo stesso modulo ho lanciato un thread. Come posso utilizzare la classe del modulo (main) nella thread ?

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    131
    dovresti usare un puntatore o un reference ...

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    4
    Sono troppo neofita per capire cosa fare. Allego il codice della main. Riesci a darmi qualche suggerimento in più ?

    cdblog è la classe che vorrei utilizzare nel tread.

    wrpDbSqlite cdblog;

    // ----------------------------------------
    // --- Code

    int main(int argc, char* argv[])
    {
    CThrLocbus *m_pCommThread;

    fprintf(stderr, "Start program\n");

    // Open db
    if( cdblog.db_open("testdb") != SQLITE_OK ) {
    // failed
    fprintf(stderr, "Can't open database: %s\n", cdblog.db_errmsg());
    fprintf(stderr, "Program terminated\n");
    return 0;
    } else {
    // Open with success
    fprintf(stderr, "Open database successfully\n");
    // Create table if not exists
    cdblog.db_create();
    // Do PREPARE
    cdblog.db_prepareIns("insert into tbLog (FirstName, LastName, CodeId, NumDevice, DateLog) values (?, ?, ?, ?, datetime('now'))");

    //************************* Initialize Comm thread
    m_pCommThread = new CThrLocbus();
    if (m_pCommThread) {
    m_pCommThread->run();

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    4
    Sono troppo neofita per capire cosa fare. Allego il codice della main. Riesci a darmi qualche suggerimento in più ?

    cdblog è la classe che vorrei utilizzare nel tread.

    wrpDbSqlite cdblog;

    // ----------------------------------------
    // --- Code

    int main(int argc, char* argv[])
    {
    CThrLocbus *m_pCommThread;

    fprintf(stderr, "Start program\n");

    // Open db
    if( cdblog.db_open("testdb") != SQLITE_OK ) {
    // failed
    fprintf(stderr, "Can't open database: %s\n", cdblog.db_errmsg());
    fprintf(stderr, "Program terminated\n");
    return 0;
    } else {
    // Open with success
    fprintf(stderr, "Open database successfully\n");
    // Create table if not exists
    cdblog.db_create();
    // Do PREPARE
    cdblog.db_prepareIns("insert into tbLog (FirstName, LastName, CodeId, NumDevice, DateLog) values (?, ?, ?, ?, datetime('now'))");

    //************************* Initialize Comm thread
    m_pCommThread = new CThrLocbus();
    if (m_pCommThread) {
    m_pCommThread->run();
    }
    }

    Grazie mille

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    131
    Avevo capito male.. Tu vuoi rendere visibile lo stesso oggetto a due o più moduli?
    Usa la parola chiave extern per specificare che l'istanza della variabile si trova in un altro modulo.

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    4
    Ho dichiarato

    extern wrpDbSqlite cdblog;

    nella thread e tutto funziona !

    Grazie mille !!!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.