Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626

    [C++] Dubbio su const char*

    Ciao a tutti,
    Ho un dubbio sul' uso di const char* (spesso mi perdo in un bicchier d'acqua )
    Se creo un metodo/funzione del tipo

    codice:
    void saveToFile(const char* fileName);
    Chiaramente, quanto lo richiamo posso fare

    codice:
    saveToFile("pippo.txt");
    Ma se faccio

    codice:
    char *filename;
    ...
    saveToFile(filename);
    E' corretto? o dovrei dovrei creare una nuova funzione che prende un char* ?

    Grazie

  2. #2
    È corretto, la conversione da T* a const T* è implicita e sempre possibile.
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Grazie! ogni tanto mi prendono sti dubbi niubbi

    Scusa, ma scrivere così è giusto?

    codice:
    void saveToFile(char* filename);
    ...
    
    saveToFile("Pippo.txt");

  4. #4
    Ni. Dato che non è consentito modificare gli string literal (in genere sono memorizzati in un'area di memoria di sola lettura), normalmente li passi come const char * (in effetti, il cast implicito a char * è deprecato ed è consentito solo per compatibilità con codice C scritto quando ancora const non esisteva).
    Amaro C++, il gusto pieno dell'undefined behavior.

  5. #5
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Grazie per la spiegazione

  6. #6


    (in generale, comunque, usa const char * quando puoi e char * quando devi - ovvero, se una stringa viene modificata dalla tua funzione usa char *, in tutti gli altri casi usa const char *)
    Amaro C++, il gusto pieno dell'undefined behavior.

  7. #7
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    ok..seguirò il tuo consiglio.

    Più che altro, il dubbio mi è sorto usando le Qt: spesso viene richiesto come parametro un const char* (oltre ai tipi definiti dalla libreria), ma io avevo uno char*

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.