Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    [C++], errore in compilazione

    Questa riga

    wxConfig *wxconfig= new wxConfig("Applicazione");

    tratta da un semplice programma che si compila senza problemi sotto Windows mi da il seguente errore sotto Linux:

    /home/denis76/C++/Linux/WxPlannerClient/src/FileIniClient.cpp:6: error: conversion from 'const char [4]' to 'const wxString' is ambiguous
    /usr/include/wx-2.6/wx/string.h:643: note: candidates are: wxString::wxString(wxChar, size_t) <near match>
    /usr/include/wx-2.6/wx/string.h:633: note: wxString::wxString(int) <near match>
    make: *** [FileIniClient.lo] Error 1
    *** Uscito con stato: 2 ***

    Avete idea di quale sia il problema?

  2. #2
    Utente di HTML.it L'avatar di XWolverineX
    Registrato dal
    Aug 2005
    residenza
    Prague
    Messaggi
    2,565
    Sembra che nella versione di linux, la classe wxString non ha un costruttore di copia che possa convertire in wxChar implicitamente.
    Prova a dichiarare un wxString, metterci dentro "Applicazione", cosi
    codice:
     wxString c = "Ciao"; //poi devi vedere tu come si fa.
     wxConfig *wxconfig= new wxConfig(c);
    "Se proprio devono piratare, almeno piratino il nostro." (Bill Gates)

    "Non è possibile che 2 istituzioni statali mi mettano esami nello stesso giorno." (XWolverineX)

    http://xvincentx.netsons.org/programBlog

  3. #3
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Prova con

    wxConfig *wxconfig= new wxConfig(_T("Applicazione"));

    anche se dall'errore sembrerebbe che il problema sia in un'altra linea (infatti viene indicata una costante 'const char [4]' ...) ...

  4. #4
    Quella riga ora è andata a posto. Grazie.

    Ancora in ambiente Linux ho il problema:

    wxString a;
    char b[256];
    strcpy(b, a);

    Se tento di compilare ho il problema:

    /home/denis76/C++/Linux/WxPlannerClient/src/FileIniClient.cpp:9: error: cannot convert 'wxString' to 'const char*' for argument '2' to 'char* strcpy(char*, const char*)'


    Hai idea?

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Dovrebbe essere

    strcpy(b, a.c_str());

  6. #6
    Ecco la soluzione:

    strcpy(b, (const char*)a.c_str());

    E' molto strano. Ho scritto un programma in C++ con WxDev-C++ compilato con MinGw. Sotto Windows il codice:

    wxString a;
    char b[256];
    strcpy(b, a);

    viene compilato tranquillamente mentre sotto Linux è necessario scrivere:

    wxString a;
    char b[256];
    strcpy(b, (const char*)a.c_str());

    Come mai?

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da denis76
    Ecco la soluzione:

    strcpy(b, (const char*)a.c_str());
    Cioe' quella che ti avevo indicato ...?

  8. #8
    Sì, con l'aggiunta di (cost char*).

    Hai idea perché il compilatore Debian sia più pignolo di MinGw?

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Penso che anche senza il cast avrebbe funzionato ...

    Non conosco il perche' della differenza ...

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 © 2025 vBulletin Solutions, Inc. All rights reserved.