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?
Forum Updated to NodeBB v4.3 + New Features

Is there a "new" style for casting?

Scheduled Pinned Locked Moved Solved General and Desktop
46 Posts 9 Posters 32.9k 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.
  • aha_1980A aha_1980

    @J.Hilk said in Is there a "new" style for casting?:

    y = int (x); // functional notation

    Note that this is also a valid C++ style cast, which is still used for numeric types, as it's less noise than the xxx_cast<>() versions.

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

    @aha_1980
    thanks; I Didn't make that clear enough, my bad for simply copy and pasting :-)


    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
    0
    • S Offline
      S Offline
      saber
      wrote on last edited by saber
      #5

      can you modify those warnings lines in "new cast"
      it will make it clear for me.
      thanks.
      @jsulm can you ? please

      // Check available space on destination before we start
          struct statfs info;
          statfs(newPath.toLocal8Bit(), &info);
          if ((qint64) info.f_bavail * info.f_bsize < total) {  // here 
      
            // If it is a cut/move on the same device it doesn't matter
            if (cutList.count()) {
              qint64 driveSize = (qint64) info.f_bavail*info.f_bsize;  // here 
              statfs(files.at(0).path().toLocal8Bit(),&info);
      
              // Same device?
              if ((qint64) info.f_bavail*info.f_bsize != driveSize) {  // here 
                emit copyProgressFinished(2, newFiles);
                return 0;
              }
            } else {
              emit copyProgressFinished(2, newFiles);
              return 0;
            }
          }
      
      
      J.HilkJ jsulmJ 2 Replies Last reply
      0
      • S saber

        can you modify those warnings lines in "new cast"
        it will make it clear for me.
        thanks.
        @jsulm can you ? please

        // Check available space on destination before we start
            struct statfs info;
            statfs(newPath.toLocal8Bit(), &info);
            if ((qint64) info.f_bavail * info.f_bsize < total) {  // here 
        
              // If it is a cut/move on the same device it doesn't matter
              if (cutList.count()) {
                qint64 driveSize = (qint64) info.f_bavail*info.f_bsize;  // here 
                statfs(files.at(0).path().toLocal8Bit(),&info);
        
                // Same device?
                if ((qint64) info.f_bavail*info.f_bsize != driveSize) {  // here 
                  emit copyProgressFinished(2, newFiles);
                  return 0;
                }
              } else {
                emit copyProgressFinished(2, newFiles);
                return 0;
              }
            }
        
        
        J.HilkJ Offline
        J.HilkJ Offline
        J.Hilk
        Moderators
        wrote on last edited by J.Hilk
        #6

        @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


        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.

        S 2 Replies Last reply
        2
        • S saber

          can you modify those warnings lines in "new cast"
          it will make it clear for me.
          thanks.
          @jsulm can you ? please

          // Check available space on destination before we start
              struct statfs info;
              statfs(newPath.toLocal8Bit(), &info);
              if ((qint64) info.f_bavail * info.f_bsize < total) {  // here 
          
                // If it is a cut/move on the same device it doesn't matter
                if (cutList.count()) {
                  qint64 driveSize = (qint64) info.f_bavail*info.f_bsize;  // here 
                  statfs(files.at(0).path().toLocal8Bit(),&info);
          
                  // Same device?
                  if ((qint64) info.f_bavail*info.f_bsize != driveSize) {  // here 
                    emit copyProgressFinished(2, newFiles);
                    return 0;
                  }
                } else {
                  emit copyProgressFinished(2, newFiles);
                  return 0;
                }
              }
          
          
          jsulmJ Offline
          jsulmJ Offline
          jsulm
          Lifetime Qt Champion
          wrote on last edited by
          #7

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

          can you ? please

          I already did in one of your other threads

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

          1 Reply Last reply
          0
          • 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
            #8

            @J.Hilk i did others

            if (cutList.count()) {
                    qint64 driveSize = static_cast<qint64>(info.f_bavail) * (info.f_bsize) ;
                    statfs(files.at(0).path().toLocal8Bit(),&info);
            
                    // Same device?
                    if (static_cast<qint64>(info.f_bavail) * (info.f_bsize)  != driveSize) {
                      emit copyProgressFinished(2, newFiles);
                      return 0;
                    }
            
            1 Reply Last reply
            0
            • 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

                                          • Login

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