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. Other Discussions
  3. Clever Code
  4. C# rots your C++ brain part 2

C# rots your C++ brain part 2

Scheduled Pinned Locked Moved Clever Code
csharpc++question
22 Posts 15 Posters 88 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.
  • J Offline
    J Offline
    Jorgen Sigvardsson
    wrote on last edited by
    #1

    class MyException : std::exception {
    ...
    }

    try {
    throw MyException();
    } catch(std::exception& ex) {
    }

    The exception is not going to be caught. Can you figure out why?

    C L N J C 8 Replies Last reply
    0
    • J Jorgen Sigvardsson

      class MyException : std::exception {
      ...
      }

      try {
      throw MyException();
      } catch(std::exception& ex) {
      }

      The exception is not going to be caught. Can you figure out why?

      C Offline
      C Offline
      Chris Meech
      wrote on last edited by
      #2

      Different types? I see the inheritance, but possibly the catch doesn't.

      Chris Meech I am Canadian. [heard in a local bar] In theory there is no difference between theory and practice. In practice there is. [Yogi Berra]

      1 Reply Last reply
      0
      • J Jorgen Sigvardsson

        class MyException : std::exception {
        ...
        }

        try {
        throw MyException();
        } catch(std::exception& ex) {
        }

        The exception is not going to be caught. Can you figure out why?

        L Offline
        L Offline
        Luc Pattyn
        wrote on last edited by
        #3

        Jörgen Sigvardsson wrote:

        throw MyException();

        does this compile at all? I would expect new in there. :)

        Luc Pattyn [Forum Guidelines] [My Articles]


        Fixturized forever. :confused:


        J 1 Reply Last reply
        0
        • J Jorgen Sigvardsson

          class MyException : std::exception {
          ...
          }

          try {
          throw MyException();
          } catch(std::exception& ex) {
          }

          The exception is not going to be caught. Can you figure out why?

          N Offline
          N Offline
          Nougat H
          wrote on last edited by
          #4

          This works:

          class MyException : public std::exception {

          I had to write it down to see it. :D

          J K 2 Replies Last reply
          0
          • L Luc Pattyn

            Jörgen Sigvardsson wrote:

            throw MyException();

            does this compile at all? I would expect new in there. :)

            Luc Pattyn [Forum Guidelines] [My Articles]


            Fixturized forever. :confused:


            J Offline
            J Offline
            Jim Crafton
            wrote on last edited by
            #5

            sure. you can technically use either heap or stack based allocation, the difference being that the heap based approach requires you to clean up manually, and is a big potential for mem leaks. pretty much everyone uses the stack based approach.

            ¡El diablo está en mis pantalones! ¡Mire, mire! Real Mentats use only 100% pure, unfooled around with Sapho Juice(tm)! SELECT * FROM User WHERE Clue > 0 0 rows returned Save an Orange - Use the VCF! VCF Blog

            L 1 Reply Last reply
            0
            • J Jim Crafton

              sure. you can technically use either heap or stack based allocation, the difference being that the heap based approach requires you to clean up manually, and is a big potential for mem leaks. pretty much everyone uses the stack based approach.

              ¡El diablo está en mis pantalones! ¡Mire, mire! Real Mentats use only 100% pure, unfooled around with Sapho Juice(tm)! SELECT * FROM User WHERE Clue > 0 0 rows returned Save an Orange - Use the VCF! VCF Blog

              L Offline
              L Offline
              Luc Pattyn
              wrote on last edited by
              #6

              I see. C# would not allow that. :)

              Luc Pattyn [Forum Guidelines] [My Articles]


              Fixturized forever. :confused:


              1 Reply Last reply
              0
              • N Nougat H

                This works:

                class MyException : public std::exception {

                I had to write it down to see it. :D

                J Offline
                J Offline
                Jorgen Sigvardsson
                wrote on last edited by
                #7

                That's the trick. In hindsight, the compiler is absolutely right. I would like C++ compiler writers to issue a warning whenever private inheritance is used and the class itself is used for exceptions.

                -- Kein Mitleid Für Die Mehrheit

                L 1 Reply Last reply
                0
                • J Jorgen Sigvardsson

                  class MyException : std::exception {
                  ...
                  }

                  try {
                  throw MyException();
                  } catch(std::exception& ex) {
                  }

                  The exception is not going to be caught. Can you figure out why?

                  J Offline
                  J Offline
                  James_Zhang
                  wrote on last edited by
                  #8

                  no idea. c# rotted my c++ brain too. not that i was really good at c++ though. i think that you can't do this in c++, but you can in c#?

                  J 1 Reply Last reply
                  0
                  • J Jorgen Sigvardsson

                    class MyException : std::exception {
                    ...
                    }

                    try {
                    throw MyException();
                    } catch(std::exception& ex) {
                    }

                    The exception is not going to be caught. Can you figure out why?

                    C Offline
                    C Offline
                    Chris Maunder
                    wrote on last edited by
                    #9

                    :sigh: I think I need to take 2 weeks off and go back to straight C++.

                    cheers, Chris Maunder

                    CodeProject.com : C++ MVP

                    J 1 Reply Last reply
                    0
                    • J James_Zhang

                      no idea. c# rotted my c++ brain too. not that i was really good at c++ though. i think that you can't do this in c++, but you can in c#?

                      J Offline
                      J Offline
                      Jorgen Sigvardsson
                      wrote on last edited by
                      #10

                      No, you can't make this mistake in C#, because you cannot specify whether the inheritance should be private or not. Inheritance is always public in C#.

                      1 Reply Last reply
                      0
                      • C Chris Maunder

                        :sigh: I think I need to take 2 weeks off and go back to straight C++.

                        cheers, Chris Maunder

                        CodeProject.com : C++ MVP

                        J Offline
                        J Offline
                        Jorgen Sigvardsson
                        wrote on last edited by
                        #11

                        If parsing C++ wasn't so damn hard, I'd write a tool to find these things for me. During the build process at 2 am, the build server would send me an SMS for each find. Do you know if Lint can find these kinds of things? :~

                        L 1 Reply Last reply
                        0
                        • J Jorgen Sigvardsson

                          If parsing C++ wasn't so damn hard, I'd write a tool to find these things for me. During the build process at 2 am, the build server would send me an SMS for each find. Do you know if Lint can find these kinds of things? :~

                          L Offline
                          L Offline
                          led mike
                          wrote on last edited by
                          #12

                          C# rots your C++ brain

                          C# rots your C++ brain

                          imagine what it does to non c++ brains (example: "The other day I saw the tooth fairy sodomizing easter bunny using a Dispose Pattern, SIDEWAYS!" :omg: ) ;)

                          led mike

                          S 1 Reply Last reply
                          0
                          • J Jorgen Sigvardsson

                            class MyException : std::exception {
                            ...
                            }

                            try {
                            throw MyException();
                            } catch(std::exception& ex) {
                            }

                            The exception is not going to be caught. Can you figure out why?

                            A Offline
                            A Offline
                            Anthony Mushrow
                            wrote on last edited by
                            #13

                            C# hasn't rotted my brain, I saw that straight away. Maybe it's just you. :confused:

                            My current favourite word is: Nipple!

                            -SK Genius

                            Game Programming articles start -here[^]-

                            1 Reply Last reply
                            0
                            • L led mike

                              C# rots your C++ brain

                              C# rots your C++ brain

                              imagine what it does to non c++ brains (example: "The other day I saw the tooth fairy sodomizing easter bunny using a Dispose Pattern, SIDEWAYS!" :omg: ) ;)

                              led mike

                              S Offline
                              S Offline
                              Shog9 0
                              wrote on last edited by
                              #14

                              Yes. You definitely need less C#. :)

                              ----

                              You're right. These facts that you've laid out totally contradict the wild ramblings that I pulled off the back of cornflakes packets.

                              L 1 Reply Last reply
                              0
                              • S Shog9 0

                                Yes. You definitely need less C#. :)

                                ----

                                You're right. These facts that you've laid out totally contradict the wild ramblings that I pulled off the back of cornflakes packets.

                                L Offline
                                L Offline
                                led mike
                                wrote on last edited by
                                #15

                                Shog9 wrote:

                                You definitely need less C#

                                I'm trying. I have started working with our C code base last year. It's a nightmare of course, unstructured, retarded spaghetti code. Unfortunately I still double duty in the wonderful new .NET world of our shop as well. I can't help but laughcry whenever I think about the dispose pattern. Here, we give you ( developers that can't deal with memory management "pointers" ) this magical world of garbage collection to eliminate the burden of understanding how computers work. This new magical world provides more native access than Java and so make sure to take a look at the, *gulp* simple eh yeah eh simple Dispose Pattern to ensure you are allocating and releasing native resources correctly. LMAO! Sure, they can't deal with pointers but they'll get this Dispose Pattern no problem! ROTF! :laugh::laugh::laugh:

                                led mike

                                1 Reply Last reply
                                0
                                • J Jorgen Sigvardsson

                                  That's the trick. In hindsight, the compiler is absolutely right. I would like C++ compiler writers to issue a warning whenever private inheritance is used and the class itself is used for exceptions.

                                  -- Kein Mitleid Für Die Mehrheit

                                  L Offline
                                  L Offline
                                  Le centriste
                                  wrote on last edited by
                                  #16

                                  Frankly, I don't see the point of private inheritance. I see it more like a <<uses>> than an <<is>>.

                                  J S 2 Replies Last reply
                                  0
                                  • L Le centriste

                                    Frankly, I don't see the point of private inheritance. I see it more like a <<uses>> than an <<is>>.

                                    J Offline
                                    J Offline
                                    Jorgen Sigvardsson
                                    wrote on last edited by
                                    #17

                                    That is exactly the purpose it is intended to serve. It's there to save some extra typing for programmers. Instead of aggregating another object as a member variable, it's merged together with the "this" object. I think the language should've required the use of a visibility modifier. That way it wouldn't have been such a potential source of errors.

                                    1 Reply Last reply
                                    0
                                    • N Nougat H

                                      This works:

                                      class MyException : public std::exception {

                                      I had to write it down to see it. :D

                                      K Offline
                                      K Offline
                                      Kevin McFarlane
                                      wrote on last edited by
                                      #18

                                      Ah yes, I didn't spot that! It's the kind of nasty trick they would pull on you at interview. :) I haven't done any C++ for about 4 years now.

                                      Kevin

                                      1 Reply Last reply
                                      0
                                      • J Jorgen Sigvardsson

                                        class MyException : std::exception {
                                        ...
                                        }

                                        try {
                                        throw MyException();
                                        } catch(std::exception& ex) {
                                        }

                                        The exception is not going to be caught. Can you figure out why?

                                        E Offline
                                        E Offline
                                        edu net
                                        wrote on last edited by
                                        #19

                                        it's not functionally useful to adorn c++ inheritance with the

                                        private

                                        modifier (or no modifier at all). just keep all inheritance

                                        public

                                        (and don't forget it). i couldn't spot the error as it would never have happened to me coz of the above rule.


                                        Love is the illusion that one kiss is different from another. - e.m

                                        1 Reply Last reply
                                        0
                                        • L Le centriste

                                          Frankly, I don't see the point of private inheritance. I see it more like a <<uses>> than an <<is>>.

                                          S Offline
                                          S Offline
                                          Steve_
                                          wrote on last edited by
                                          #20

                                          But if it <<is>> it can access protected members.

                                          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