Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. Is there a "new" style for casting?

Is there a "new" style for casting?

Scheduled Pinned Locked Moved Solved General and Desktop
46 Posts 9 Posters 34.1k Views 3 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • J.HilkJ J.Hilk

    @saber
    Don't post screenshots of your code, makes it difficult to actuallly quote it and modify it.

    0_1534158240928_9e5b4388-8b78-4613-a351-1439e1850d63-image.png

    S Offline
    S Offline
    saber
    wrote on last edited by
    #9

    @J.Hilk i got other warnings like

        int x = screensize().width()  * .8;
        int y = screensize().height() * .7;
    

    and warning is

    /home/shaber/Desktop/Folder/work3/coreApps/app/corefm/corefm.cpp:29: warning: implicit conversion turns floating-point number into integer: 'double' to 'int'
    
    jsulmJ J.HilkJ AbrarA 3 Replies Last reply
    0
    • S saber

      @J.Hilk i got other warnings like

          int x = screensize().width()  * .8;
          int y = screensize().height() * .7;
      

      and warning is

      /home/shaber/Desktop/Folder/work3/coreApps/app/corefm/corefm.cpp:29: warning: implicit conversion turns floating-point number into integer: 'double' to 'int'
      
      jsulmJ Offline
      jsulmJ Offline
      jsulm
      Lifetime Qt Champion
      wrote on last edited by jsulm
      #10

      @saber You are multiplying an int with a double and assign the result to an int, this is dangerous.
      To get rid of the warning you can cast the result of the multiplication to int or (even better) think about what you're doing and whether rounding in a defined way would be better.

      https://forum.qt.io/topic/113070/qt-code-of-conduct

      1 Reply Last reply
      1
      • S saber

        @J.Hilk i got other warnings like

            int x = screensize().width()  * .8;
            int y = screensize().height() * .7;
        

        and warning is

        /home/shaber/Desktop/Folder/work3/coreApps/app/corefm/corefm.cpp:29: warning: implicit conversion turns floating-point number into integer: 'double' to 'int'
        
        J.HilkJ Offline
        J.HilkJ Offline
        J.Hilk
        Moderators
        wrote on last edited by
        #11

        @saber said in Is there a "new" style for casting?:

        @J.Hilk i got other warnings like

            int x = screensize().width()  * .8;
            int y = screensize().height() * .7;
        

        and warning is

        /home/shaber/Desktop/Folder/work3/coreApps/app/corefm/corefm.cpp:29: warning: implicit conversion turns floating-point number into integer: 'double' to 'int'
        

        of course,
        this breaks down to

        int = int * double;
        int = double <- precision loss, truncated after the decimal point

        this is an implicit conversion of double to int, therefore cast it alsoif thats intendet behaviour:

        int x = static_cast<int>(screensize().width()  * .8);
        

        or round it

        int x = qRound(screensize().width()  * .8);
        

        Be aware of the Qt Code of Conduct, when posting : https://forum.qt.io/topic/113070/qt-code-of-conduct


        Q: What's that?
        A: It's blue light.
        Q: What does it do?
        A: It turns blue.

        1 Reply Last reply
        1
        • S saber

          @J.Hilk i got other warnings like

              int x = screensize().width()  * .8;
              int y = screensize().height() * .7;
          

          and warning is

          /home/shaber/Desktop/Folder/work3/coreApps/app/corefm/corefm.cpp:29: warning: implicit conversion turns floating-point number into integer: 'double' to 'int'
          
          AbrarA Offline
          AbrarA Offline
          Abrar
          wrote on last edited by Abrar
          #12

          @saber as @J-Hilk and @jsulm said
          int x = int(screensize().width() * .8);
          int y = int(screensize().height() * .7);

          @J-Hilk and @jsulm make it very easy to me to understand.

          jsulmJ 1 Reply Last reply
          1
          • AbrarA Abrar

            @saber as @J-Hilk and @jsulm said
            int x = int(screensize().width() * .8);
            int y = int(screensize().height() * .7);

            @J-Hilk and @jsulm make it very easy to me to understand.

            jsulmJ Offline
            jsulmJ Offline
            jsulm
            Lifetime Qt Champion
            wrote on last edited by
            #13

            @Abrar said in Is there a "new" style for casting?:

            int x = int(screensize().width() * .8);
            int y = int(screensize().height() * .7);

            This would bring back the warning about old style cast.

            https://forum.qt.io/topic/113070/qt-code-of-conduct

            AbrarA 1 Reply Last reply
            1
            • jsulmJ jsulm

              @Abrar said in Is there a "new" style for casting?:

              int x = int(screensize().width() * .8);
              int y = int(screensize().height() * .7);

              This would bring back the warning about old style cast.

              AbrarA Offline
              AbrarA Offline
              Abrar
              wrote on last edited by
              #14

              @jsulm is it look like this
              int x = static_cast<int>(screensize().width() * .8);
              int y = static_cast<int>(screensize().height() * .7);

              If not tell me the difference between new cast and old...plz

              jsulmJ 1 Reply Last reply
              1
              • AbrarA Abrar

                @jsulm is it look like this
                int x = static_cast<int>(screensize().width() * .8);
                int y = static_cast<int>(screensize().height() * .7);

                If not tell me the difference between new cast and old...plz

                jsulmJ Offline
                jsulmJ Offline
                jsulm
                Lifetime Qt Champion
                wrote on last edited by jsulm
                #15

                @Abrar said in Is there a "new" style for casting?:

                static_cast<int>(screensize().width() * .8)

                Yes, this is C++ type cast.

                (int)(someVariabl);
                

                Old C style cast which should not be used in C++.
                See https://stackoverflow.com/questions/332030/when-should-static-cast-dynamic-cast-const-cast-and-reinterpret-cast-be-used

                https://forum.qt.io/topic/113070/qt-code-of-conduct

                J.HilkJ AbrarA 2 Replies Last reply
                1
                • jsulmJ jsulm

                  @Abrar said in Is there a "new" style for casting?:

                  static_cast<int>(screensize().width() * .8)

                  Yes, this is C++ type cast.

                  (int)(someVariabl);
                  

                  Old C style cast which should not be used in C++.
                  See https://stackoverflow.com/questions/332030/when-should-static-cast-dynamic-cast-const-cast-and-reinterpret-cast-be-used

                  J.HilkJ Offline
                  J.HilkJ Offline
                  J.Hilk
                  Moderators
                  wrote on last edited by
                  #16

                  @jsulm
                  technically,

                  int(someVariabl);

                  is a valid "conversion", as it's a functional notation


                  Be aware of the Qt Code of Conduct, when posting : https://forum.qt.io/topic/113070/qt-code-of-conduct


                  Q: What's that?
                  A: It's blue light.
                  Q: What does it do?
                  A: It turns blue.

                  jsulmJ 1 Reply Last reply
                  2
                  • jsulmJ jsulm

                    @Abrar said in Is there a "new" style for casting?:

                    static_cast<int>(screensize().width() * .8)

                    Yes, this is C++ type cast.

                    (int)(someVariabl);
                    

                    Old C style cast which should not be used in C++.
                    See https://stackoverflow.com/questions/332030/when-should-static-cast-dynamic-cast-const-cast-and-reinterpret-cast-be-used

                    AbrarA Offline
                    AbrarA Offline
                    Abrar
                    wrote on last edited by
                    #17

                    @jsulm ok now understand the difference.
                    Thanks...

                    1 Reply Last reply
                    0
                    • J.HilkJ J.Hilk

                      @jsulm
                      technically,

                      int(someVariabl);

                      is a valid "conversion", as it's a functional notation

                      jsulmJ Offline
                      jsulmJ Offline
                      jsulm
                      Lifetime Qt Champion
                      wrote on last edited by
                      #18

                      @J.Hilk Both are C-style casts

                      https://forum.qt.io/topic/113070/qt-code-of-conduct

                      J.HilkJ sierdzioS 2 Replies Last reply
                      0
                      • S Offline
                        S Offline
                        saber
                        wrote on last edited by saber
                        #19

                        guys what a
                        @saber = static_cast<learn>( @jsulm and @J-Hilk ; (i think)

                        thanks.learned alot.

                        AbrarA 1 Reply Last reply
                        1
                        • S saber

                          guys what a
                          @saber = static_cast<learn>( @jsulm and @J-Hilk ; (i think)

                          thanks.learned alot.

                          AbrarA Offline
                          AbrarA Offline
                          Abrar
                          wrote on last edited by
                          #20

                          @saber you wrote the clever statement ever.
                          !!!!

                          1 Reply Last reply
                          0
                          • jsulmJ jsulm

                            @J.Hilk Both are C-style casts

                            J.HilkJ Offline
                            J.HilkJ Offline
                            J.Hilk
                            Moderators
                            wrote on last edited by J.Hilk
                            #21

                            @jsulm thats not what @aha_1980 said earlier, and what I read from my trusted source
                            (http://www.cplusplus.com/doc/tutorial/typecasting/) :-)

                            the new (qtcreator)clang code model seems to agree as well, as int(xy) is not flaged as old style casting.


                            Be aware of the Qt Code of Conduct, when posting : https://forum.qt.io/topic/113070/qt-code-of-conduct


                            Q: What's that?
                            A: It's blue light.
                            Q: What does it do?
                            A: It turns blue.

                            jsulmJ 1 Reply Last reply
                            1
                            • J.HilkJ J.Hilk

                              @jsulm thats not what @aha_1980 said earlier, and what I read from my trusted source
                              (http://www.cplusplus.com/doc/tutorial/typecasting/) :-)

                              the new (qtcreator)clang code model seems to agree as well, as int(xy) is not flaged as old style casting.

                              jsulmJ Offline
                              jsulmJ Offline
                              jsulm
                              Lifetime Qt Champion
                              wrote on last edited by
                              #22

                              @J.Hilk Yeah, I think I was wrong on function style cast you mentioned

                              https://forum.qt.io/topic/113070/qt-code-of-conduct

                              1 Reply Last reply
                              0
                              • S Offline
                                S Offline
                                saber
                                wrote on last edited by saber
                                #23

                                i got more warnings to fix.

                                0_1534227012370_t.png

                                    switch( m_model->state() ) {
                                        case Battery::FullyCharged:
                                            ui->statusEdit->setText( tr( "Full Charged" ) );
                                            ui->timerLblEdit->setText( tr( "Full Charged" ) );
                                            break;
                                        case Battery::Discharging:
                                            addSeconds = static_cast<int>(m_model->toEmpty());
                                            addSeconds = rate != 0 && addSeconds == 0 ? ( energy - energyEmpty ) * 4 / rate: addSeconds;
                                            ui->statusEdit->setText( tr( "Discharging" ) );
                                            ui->timerLblEdit->setText( tr( "Discharged in : " ) );
                                            break;
                                        case Battery::Charging:
                                            addSeconds = static_cast<int>(m_model->toFull());
                                            addSeconds = rate != 0 && addSeconds == 0 ? ( energyFull - energy ) * 4 / rate : addSeconds;
                                            ui->statusEdit->setText( tr( "Charging" ) );
                                            ui->timerLblEdit->setText( tr( "Charged in : " ) );
                                            break;
                                        default:
                                            ui->statusEdit->setText( tr( "No Battery" ) );
                                            ui->timerLblEdit->setText( tr( "No Battery" ) );
                                            break;
                                    }
                                
                                jsulmJ 1 Reply Last reply
                                0
                                • jsulmJ jsulm

                                  @J.Hilk Both are C-style casts

                                  sierdzioS Offline
                                  sierdzioS Offline
                                  sierdzio
                                  Moderators
                                  wrote on last edited by
                                  #24

                                  @jsulm said in Is there a "new" style for casting?:

                                  @J.Hilk Both are C-style casts

                                  Yep but clang does not complain about int(something) while it does complain about (int) something. Just sayin' :-)

                                  (Z(:^

                                  1 Reply Last reply
                                  0
                                  • S saber

                                    i got more warnings to fix.

                                    0_1534227012370_t.png

                                        switch( m_model->state() ) {
                                            case Battery::FullyCharged:
                                                ui->statusEdit->setText( tr( "Full Charged" ) );
                                                ui->timerLblEdit->setText( tr( "Full Charged" ) );
                                                break;
                                            case Battery::Discharging:
                                                addSeconds = static_cast<int>(m_model->toEmpty());
                                                addSeconds = rate != 0 && addSeconds == 0 ? ( energy - energyEmpty ) * 4 / rate: addSeconds;
                                                ui->statusEdit->setText( tr( "Discharging" ) );
                                                ui->timerLblEdit->setText( tr( "Discharged in : " ) );
                                                break;
                                            case Battery::Charging:
                                                addSeconds = static_cast<int>(m_model->toFull());
                                                addSeconds = rate != 0 && addSeconds == 0 ? ( energyFull - energy ) * 4 / rate : addSeconds;
                                                ui->statusEdit->setText( tr( "Charging" ) );
                                                ui->timerLblEdit->setText( tr( "Charged in : " ) );
                                                break;
                                            default:
                                                ui->statusEdit->setText( tr( "No Battery" ) );
                                                ui->timerLblEdit->setText( tr( "No Battery" ) );
                                                break;
                                        }
                                    
                                    jsulmJ Offline
                                    jsulmJ Offline
                                    jsulm
                                    Lifetime Qt Champion
                                    wrote on last edited by
                                    #25

                                    @saber said in Is there a "new" style for casting?:

                                    i got more warnings to fix.

                                    So, fix them

                                    https://forum.qt.io/topic/113070/qt-code-of-conduct

                                    S 1 Reply Last reply
                                    1
                                    • jsulmJ jsulm

                                      @saber said in Is there a "new" style for casting?:

                                      i got more warnings to fix.

                                      So, fix them

                                      S Offline
                                      S Offline
                                      saber
                                      wrote on last edited by
                                      #26

                                      @jsulm
                                      sorry .
                                      i don't think those are casting.and i am not understanding what is the fix.

                                      jsulmJ 1 Reply Last reply
                                      0
                                      • S saber

                                        @jsulm
                                        sorry .
                                        i don't think those are casting.and i am not understanding what is the fix.

                                        jsulmJ Offline
                                        jsulmJ Offline
                                        jsulm
                                        Lifetime Qt Champion
                                        wrote on last edited by jsulm
                                        #27

                                        @saber The first warning says already what the problem is: comparing floating point numbers with == and != isn't save because of inaccuracy of such numbers represented in a computer. Depending on what you really want you should cast to int or use <, > for comparisions.
                                        For the second warning take a look at https://softwareengineering.stackexchange.com/questions/179269/why-does-clang-llvm-warn-me-about-using-default-in-a-switch-statement-where-all
                                        In general, you should try to find out what the problem is by yourself first before going to a forum and asking. Or do you want to ask for each and every warning you get? I mean, I'm happy to help, but sometimes I have the impression that people don't even try to find an answer by themselves.

                                        https://forum.qt.io/topic/113070/qt-code-of-conduct

                                        S 1 Reply Last reply
                                        2
                                        • jsulmJ jsulm

                                          @saber The first warning says already what the problem is: comparing floating point numbers with == and != isn't save because of inaccuracy of such numbers represented in a computer. Depending on what you really want you should cast to int or use <, > for comparisions.
                                          For the second warning take a look at https://softwareengineering.stackexchange.com/questions/179269/why-does-clang-llvm-warn-me-about-using-default-in-a-switch-statement-where-all
                                          In general, you should try to find out what the problem is by yourself first before going to a forum and asking. Or do you want to ask for each and every warning you get? I mean, I'm happy to help, but sometimes I have the impression that people don't even try to find an answer by themselves.

                                          S Offline
                                          S Offline
                                          saber
                                          wrote on last edited by
                                          #28

                                          @jsulm
                                          i understand all the warnings but problem is i don't know how to fix those .

                                          i know this issues are small and silly to ask to help.but i have no other way. my app's co-developer is in off-line. i am a ui designer and newbie c++ developer .

                                          thanks.

                                          jsulmJ 1 Reply Last reply
                                          0

                                          • Login

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Categories
                                          • Recent
                                          • Tags
                                          • Popular
                                          • Users
                                          • Groups
                                          • Search
                                          • Get Qt Extensions
                                          • Unsolved