Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11

Discussione: [c++]Warning

  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    4,826

    [c++]Warning

    Ciao.
    Sto cercando di togliere i warning dalla mia applicazione.
    La maggior parte di questi warning sono del tipo:

    c:\programmazione\project\gioco\colladareader.cpp( 151) : warning C4244: '=' : conversion from 'daeDouble' to 'float', possible loss of data

    codice:
    normal[i] = floatArray->getValue()[m_nIndex*3+i];
    dove normal[i] è un float e l'espressione è un double.
    Posso togliere questo warniing mettendo un cast del tipo:

    codice:
    normal[i] =((float) floatArray->getValue()[m_nIndex*3+i]);
    è corretto?
    Come mi consigliate di risolvere questi warning?
    Grazie.

  2. #2

    Re: [c++]Warning

    Sarebbe meglio definire normal[] come double, se possibile.
    01010011 01100001 01101101 01110101 01100101 01101100 01100101 01011111 00110111 00110000
    All errors are undocumented features waiting to be discovered.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    4,826
    il problema è che normal[] deve essere un float ,perchè le opengl usano i float e sono obbligato a convertire.Ma il mio discorso è piu' generale , quando ho un warning di quel tipo ,cosa bisogna fare?
    meglio un cast , meglio convertire?
    e per convertire che tipi di funzione è meglio usare?
    esiste una tabella di funzioni per la conversione?
    Grazie.

  4. #4
    Di solito un normale cast va bene.
    Amaro C++, il gusto pieno dell'undefined behavior.

  5. #5

  6. #6
    Che è giusto un pelino verboso... quando non ho a che fare con classi personalmente preferisco il vecchio cast C.
    Amaro C++, il gusto pieno dell'undefined behavior.

  7. #7
    Originariamente inviato da MItaly
    Che è giusto un pelino verboso... quando non ho a che fare con classi personalmente preferisco il vecchio cast C.
    E' proprio per la sua non verbosità ed "ambigua" semantica (che assume in C++ a causa della possibilità di sovrapporre gli operatori di casting), che in C++ sono state aggiunte static_cast, dynamic_cast e reinterpret_cast. E' vero sono verbose ma più esplicite a livello semantico: meno bug, meno crash, meno ore di debug, programmi più efficienti, meno costosi ecc..
    Meglio la verbosità, non credi?
    ;-)

  8. #8
    Utente di HTML.it L'avatar di XWolverineX
    Registrato dal
    Aug 2005
    residenza
    Prague
    Messaggi
    2,565
    Stai sviluppando un loader per i file collada? L'ho fatto anche io! MI piacerebbe confrontare!
    "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

  9. #9
    Originariamente inviato da MacApp
    E' proprio per la sua non verbosità ed "ambigua" semantica (che assume in C++ a causa della possibilità di sovrapporre gli operatori di casting), che in C++ sono state aggiunte static_cast, dynamic_cast e reinterpret_cast. E' vero sono verbose ma più esplicite a livello semantico: meno bug, meno crash, meno ore di debug, programmi più efficienti, meno costosi ecc..
    Meglio la verbosità, non credi?
    ;-)
    Converrai con me però che finché si tratta di convertire long in double e cose del genere (conversioni tra scalari, insomma) il vecchio cast C va più che bene.
    Amaro C++, il gusto pieno dell'undefined behavior.

  10. #10
    Originariamente inviato da MItaly
    Converrai con me però che finché si tratta di convertire long in double e cose del genere (conversioni tra scalari, insomma) il vecchio cast C va più che bene.
    No.

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.