Visualizzazione dei risultati da 1 a 10 su 14

Hybrid View

  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2014
    Messaggi
    55
    Poi quando compilo mi da un errore nella get dicendo che devo ritornare un riferimento a costante no un riferimento semplice..
    mi spiego..

    quando scrivo
    codice:
    const string& Persona::getnome()const{
           return nome;
    }
    il programma compila, mentre quando levo il const iniziale no. Perchè? string nome non è costante.
    Possibile che quando metto il const iniziale significa che l'oggetto ritornato non è stato modificato e non come penso io che l'oggetto ritornato è costante?

    Scusate troppe domande lo so ahahhah
    Ultima modifica di MItaly; 15-01-2015 a 09:45 Motivo: Aggiunti tag CODE

  2. #2
    Quote Originariamente inviata da vicio_93 Visualizza il messaggio
    Va bene. Per ultimo quando per esempio invoco il costruttore di una classe base per una derivata se utilizzo gli stesso nomi posso avere un conflitto di nomi?

    es.
    codice:
    Persona::Persona(string a, string b, string c){...}
    
    Studente::Studente (string a, string b, string c, string d) : Persona (a,b,c){...}
    Perché dovrebbe dare problemi? È concettualmente equivalente a chiamare una normale funzione, le espressioni che passi come argomenti non c'entrano nulla con il nome dei parametri usati dentro la funzione.

    Quote Originariamente inviata da vicio_93 Visualizza il messaggio
    Poi quando compilo mi da un errore nella get dicendo che devo ritornare un riferimento a costante no un riferimento semplice..
    mi spiego..

    quando scrivo
    codice:
    const string& Persona::getnome()const{
           return nome;
    }
    il programma compila, mentre quando levo il const iniziale no. Perchè? string nome non è costante.
    Possibile che quando metto il const iniziale significa che l'oggetto ritornato non è stato modificato e non come penso io che l'oggetto ritornato è costante?

    Scusate troppe domande lo so ahahhah
    Se marchi un metodo come const, allora il this che ricevi è const, per cui tutti i membri "appaiono" come const. Per questo motivo non puoi restituire un riferimento non costante a nome, dato che this->nome in un metodo const è di tipo const std::string&.

    Per inciso, quando posti codice racchiudilo tra tag [CODE] ... [/CODE], altrimenti perde l'indentazione e non si attiva l'evidenziazione della sintassi (ora ho corretto io).
    Amaro C++, il gusto pieno dell'undefined behavior.

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