• optional@feddit.org
    link
    fedilink
    arrow-up
    4
    ·
    1 day ago

    Ich habe lange kein C++ mehr geschrieben. Kann man da nicht irgendwas mit Operatorüberladung machen um das gültig werden zu lassen?

    • trollercoaster@sh.itjust.works
      link
      fedilink
      Deutsch
      arrow-up
      2
      ·
      51 minutes ago

      Wenn das nicht geht, kann man notfalls immer irgendwelche Schweinereien mit dem Preprocessor machen, dass das zu gültigem C++ wird.

      • XM34@feddit.org
        link
        fedilink
        English
        arrow-up
        4
        ·
        1 day ago

        Aber “<”, ,“/” und “>” sind alles Operatoren und so lange die Interpretation eindeutig ist, kompiliert C++ das auch ohne Beanstandung.

        • optional@feddit.org
          link
          fedilink
          arrow-up
          3
          ·
          edit-2
          17 hours ago

          Habe ich vorhin ausprobiert und nicht hinbekommen. Also nicht ohne dass zwischen den Operatoren zumindest noch rvalues stehen. Aber wie gesagt ich habe auch lange kein C++ mehr gemacht, vielleicht geht’s doch irgendwie. Codebeispiele werden gerne genommen.

          a<b/c>d ist jedenfalls schonmal möglich:

          #include <iostream>
          
          struct A {
              A operator<(A) {
                  std::cout << " to be ";
                  return *this;
              }
              A operator/(A) {
                  std::cout << "It's ok";                                                                                                                                           
                  return *this;
              }
              A operator>(A) {
                  std::cout << "gay";
                  return *this;
              }
          };
          
          int main() {
              A a,b,c,d;
              a<b/c>d;
          }