• @[email protected]
    link
    fedilink
    Deutsch
    40
    edit-2
    8 months ago

    Why are you putting the implementation in the .h file? You’re supposed to declare in the header and implement in the .cpp files. The meme is reversed

    • @merthyr1831
      link
      448 months ago

      If C++/C were real languages for real programming they’d enforce this in the compiler.

      No sane language designer would say “it is imperative that you do not implement your class in its header file” then write a compiler designer to say “oh you implemented your code in the header file? lol lmao that rocks”

      They have played you all for fools.

      • @[email protected]
        link
        fedilink
        178 months ago

        I actually like how much freedom C++ gives you. As long as it is fed valid code, it does not give a fuck about how you choose to structure your project

        • @[email protected]
          link
          fedilink
          28 months ago

          That freedom becomes misery on the instant you have to start maintain the code from some other free spirit, whose style is totally different from yours.

      • @[email protected]
        link
        fedilink
        Deutsch
        68 months ago

        not saying it’s good design, I ditched C++ long ago. at least the C++20 modules API is gonna fix this, right guys?

      • @[email protected]
        link
        fedilink
        48 months ago

        Header files aren’t part of the C++ language at all.

        Also mandatory “C++/C is not a language”

      • @stingpie
        link
        -48 months ago

        If C++/C were real languages for real programming they’d enforce unreadability in the compiler.

        No sane language designer would say “It is imperative that you write the most unreadable code possible” then write a compiler that says “oh your code doesn’t triple dereference pointers? lol lmao that rocks”

        They have played you all for fools.

    • @[email protected]
      link
      fedilink
      12
      edit-2
      8 months ago

      There is an issue with templated code where the implementation does have to be in the header as well, though that is not the case here. C++20 introduced modules which I guess were meant to sort out this mess, but it has been a rocky road getting them to be supported by compilers.

    • @[email protected]
      link
      fedilink
      Deutsch
      -38 months ago

      The reason is that header files are pretty much copy/pasted into your c files when you include them. so the code in them keeps getting recompiled for every c file, which drastically increases overall build times. If you only declare in the header and have one c file implementing the functions you compile them only once.

      • Victor
        link
        118 months ago

        AI reply? That’s the point they’re trying to make. The implementation shouldn’t be in the header file, but it is. Look at the image.

        • @[email protected]
          link
          fedilink
          Deutsch
          -28 months ago

          pretty sure the meme is about how the implementation looks ugly but using the implementation looks good because all the code is abstracted away. if it was like you said then why would they compare the code to the main.cpp

          • Victor
            link
            18 months ago

            I got confused. I was referring to the top-level comment in this thread, but that was actually posted by you, so… I got turned around.

            But yeah, sounds about right, that the meme could be referring to the horrors in the h file vs the clean cpp file. 😄

      • @[email protected]
        link
        fedilink
        4
        edit-2
        8 months ago

        Yeah that’s why you’re supposed to use header guards… If you don’t and include your header in multiple places your program straight up won’t compile.

      • @[email protected]
        link
        fedilink
        -38 months ago

        drastically increases overall build times

        oh wow. from 0ms all the way up to 0ms. That’s almost 1000 times faster wow.