Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. General Programming
  3. C / C++ / MFC
  4. can I dynamically convert a base class object into a derived class object?

can I dynamically convert a base class object into a derived class object?

Scheduled Pinned Locked Moved C / C++ / MFC
c++questionlearning
21 Posts 7 Posters 0 Views 1 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.
  • S Stephen Hewitt

    In general no. In the code above the compiler will go ahead and treat pBaseClass as a DerivedClass but unless it really is one you're asking for trouble. Steve

    S Offline
    S Offline
    Stephen Hewitt
    wrote on last edited by
    #8

    Score: 1.8 (2 votes).

    How are the scores calculated? Obviously not an average as 3.6 (2x1.8) can't be obtained by adding 2 scores. Steve

    E T 2 Replies Last reply
    0
    • E ewighell

      your answer is similar with my guess. but is there any way to implement the dynamical conversion from the base class object to a derived one. if not ,I would have to delete the base class object and recreate a derived one with the new operator. in this case I can't see the benefit of the inheritance, can I? Thank you very much!!! ------------------- I am learning C++ and English

      C Offline
      C Offline
      Cedric Moonen
      wrote on last edited by
      #9

      Maybe we can help you if you describe clearly what you need to do

      1 Reply Last reply
      0
      • E ewighell

        e.g:

        class DerivedClass:BaseClass
        {
        void functionInDerivedClassOnly();
        }
        BaseClass pBaseClass = new BaseClass();
        //can the following line be excuted correctly?
        (DerivedClass*)pBaseClass->functionInDerivedClassOnly();
        delete pBaseClass;

        Thank you very much!!! ------------------- I am learning C++ and English

        P Offline
        P Offline
        Prakash Nadar
        wrote on last edited by
        #10

        just by casting the baseclass pointer to derived class pointer does not make the object that was created i.e. baseclass into a dereived class. Its just like calling Donkey a dog does not make donkey to bark ;). so you can do this. BaseClass* pBaseClass = new DerivedClass(); ((DerivedClass*)pBaseClass)->functionInDerivedClassOnly(); or use reinterpret_cast


        -Prakash

        T S 2 Replies Last reply
        0
        • P Prakash Nadar

          just by casting the baseclass pointer to derived class pointer does not make the object that was created i.e. baseclass into a dereived class. Its just like calling Donkey a dog does not make donkey to bark ;). so you can do this. BaseClass* pBaseClass = new DerivedClass(); ((DerivedClass*)pBaseClass)->functionInDerivedClassOnly(); or use reinterpret_cast


          -Prakash

          T Offline
          T Offline
          toxcct
          wrote on last edited by
          #11

          hey, you posted the same thing as i did 1 hour later :sigh: where were you ? :|


          TOXCCT >>> GEII power
          [toxcct][VisualCalc 2.20][VCalc 3.0 soon...]

          O P T 3 Replies Last reply
          0
          • S Stephen Hewitt

            Score: 1.8 (2 votes).

            How are the scores calculated? Obviously not an average as 3.6 (2x1.8) can't be obtained by adding 2 scores. Steve

            E Offline
            E Offline
            ewighell
            wrote on last edited by
            #12

            I have no idea what happened, either. I remember I voted for to 4 or 5. could someone in charge of this explain the problem? Thank you very much!!! ------------------- I am learning C++ and English

            1 Reply Last reply
            0
            • T toxcct

              hey, you posted the same thing as i did 1 hour later :sigh: where were you ? :|


              TOXCCT >>> GEII power
              [toxcct][VisualCalc 2.20][VCalc 3.0 soon...]

              O Offline
              O Offline
              Owner drawn
              wrote on last edited by
              #13

              He reinterpreted it.;P

              Jesus Loves:rose:

              --Owner Drawn:rose: --Nothing special --Defeat is temporary but surrender is permanent --Never say quits --Jesus is Lord:rose:

              T 1 Reply Last reply
              0
              • O Owner drawn

                He reinterpreted it.;P

                Jesus Loves:rose:

                --Owner Drawn:rose: --Nothing special --Defeat is temporary but surrender is permanent --Never say quits --Jesus is Lord:rose:

                T Offline
                T Offline
                toxcct
                wrote on last edited by
                #14

                Owner drawn wrote:

                He reinterpreted it

                without quoting or refering to me ?! ;P not that sure...


                TOXCCT >>> GEII power
                [toxcct][VisualCalc 2.20][VCalc 3.0 soon...]

                1 Reply Last reply
                0
                • P Prakash Nadar

                  just by casting the baseclass pointer to derived class pointer does not make the object that was created i.e. baseclass into a dereived class. Its just like calling Donkey a dog does not make donkey to bark ;). so you can do this. BaseClass* pBaseClass = new DerivedClass(); ((DerivedClass*)pBaseClass)->functionInDerivedClassOnly(); or use reinterpret_cast


                  -Prakash

                  S Offline
                  S Offline
                  Stephen Hewitt
                  wrote on last edited by
                  #15

                  In the example above you should use static_cast<DerivedClass*>(pBaseClass). It's safer (but still not 100% safe) as it will only compile if it's possible for BaseClasss to exist which are also DerivedClasss (there is an inheritance relationship between them). Steve

                  P 1 Reply Last reply
                  0
                  • T toxcct

                    hey, you posted the same thing as i did 1 hour later :sigh: where were you ? :|


                    TOXCCT >>> GEII power
                    [toxcct][VisualCalc 2.20][VCalc 3.0 soon...]

                    P Offline
                    P Offline
                    Prakash Nadar
                    wrote on last edited by
                    #16

                    toxcct wrote:

                    hey, you posted the same thing as i did 1 hour later

                    I did not read the other solutions ;)


                    -Prakash

                    1 Reply Last reply
                    0
                    • S Stephen Hewitt

                      In the example above you should use static_cast<DerivedClass*>(pBaseClass). It's safer (but still not 100% safe) as it will only compile if it's possible for BaseClasss to exist which are also DerivedClasss (there is an inheritance relationship between them). Steve

                      P Offline
                      P Offline
                      Prakash Nadar
                      wrote on last edited by
                      #17

                      Stephen Hewitt wrote:

                      In the example above you should use static_cast(pBaseClass)

                      yes, correct. Thanks.


                      -Prakash

                      1 Reply Last reply
                      0
                      • T toxcct

                        hey, you posted the same thing as i did 1 hour later :sigh: where were you ? :|


                        TOXCCT >>> GEII power
                        [toxcct][VisualCalc 2.20][VCalc 3.0 soon...]

                        T Offline
                        T Offline
                        ThatsAlok
                        wrote on last edited by
                        #18

                        toxcct wrote:

                        where were you ?

                        Me, Sleeping :)

                        "Opinions are neither right nor wrong. I cannot change your opinion. I can, however, change what influences your opinion." - David Crow

                        cheers, Alok Gupta VC Forum Q&A :- I/ IV

                        T 1 Reply Last reply
                        0
                        • S Stephen Hewitt

                          Score: 1.8 (2 votes).

                          How are the scores calculated? Obviously not an average as 3.6 (2x1.8) can't be obtained by adding 2 scores. Steve

                          T Offline
                          T Offline
                          toxcct
                          wrote on last edited by
                          #19

                          the scores are ponderated with the level of the members... - a bronze member votes for 1 voice - a silver member votes for 2 voices - a gold member votes for 4 voices - a platinum member votes for 8 voices


                          TOXCCT >>> GEII power
                          [toxcct][VisualCalc 2.20][VCalc 3.0 soon...]

                          S 1 Reply Last reply
                          0
                          • T ThatsAlok

                            toxcct wrote:

                            where were you ?

                            Me, Sleeping :)

                            "Opinions are neither right nor wrong. I cannot change your opinion. I can, however, change what influences your opinion." - David Crow

                            cheers, Alok Gupta VC Forum Q&A :- I/ IV

                            T Offline
                            T Offline
                            toxcct
                            wrote on last edited by
                            #20

                            :zzz::zzz: zzzZZZZZZZzzzzz SShhhhhhh :zzz::zzz:


                            TOXCCT >>> GEII power
                            [toxcct][VisualCalc 2.20][VCalc 3.0 soon...]

                            1 Reply Last reply
                            0
                            • T toxcct

                              the scores are ponderated with the level of the members... - a bronze member votes for 1 voice - a silver member votes for 2 voices - a gold member votes for 4 voices - a platinum member votes for 8 voices


                              TOXCCT >>> GEII power
                              [toxcct][VisualCalc 2.20][VCalc 3.0 soon...]

                              S Offline
                              S Offline
                              Stephen Hewitt
                              wrote on last edited by
                              #21

                              Ahhh Steve

                              1 Reply Last reply
                              0
                              Reply
                              • Reply as topic
                              Log in to reply
                              • Oldest to Newest
                              • Newest to Oldest
                              • Most Votes


                              • Login

                              • Don't have an account? Register

                              • Login or register to search.
                              • First post
                                Last post
                              0
                              • Categories
                              • Recent
                              • Tags
                              • Popular
                              • World
                              • Users
                              • Groups