struct oder besser Class



  • Hallo!
    für einen Port habe ich in einem reinen C-Programm immer eine Struct gehabt:

    typedef struct
      {
    //INT8U  Start;                        // automatically transmitted by UART-ISR
      INT8U  Source;                       // 0
      INT8U  Destin;                       // 1
      INT16U Index;                        // 2,3
      INT8U  SysStatus;                    // 4
      INT8U  UserStatus;                   // 5
      INT8U  CmdClass;                     // 6
      INT8U  Cmd;                          // 7
      INT16U DataCount;                    // 8,9
      INT8U  Data [PROTO_BUFFER_SIZE];     // 10; [0..DataCount]
    //INT8U  CRC;                          // automatically transmitted by UART-ISR
      } PROTO_BufferStruct;
    

    Jetzt bringe ich das gesamte Programm von C -> C++.
    Meine Frage:
    Soll ich die Struktur beibehalten und einfach in meine Klasse packen,
    oder besser die Struktur zu einer Klasse machen und sie dann instanziieren,
    wobei ich die members public lassen wollte?

    danke
    to



  • Strukturen in Cpp sind Klassen, bei denen alle Elemente vom Start weg erstmal öffentlich sind. Ansonsten gibt es keinen Unterschied zu class



  • Gut... aber sind dann Strukturen in C++ (so wie hier Designfehler)?



  • Nein, sind sie nicht - besonders wenn du mit (alten) C Funktionen arbeitest.



  • Strukturen sind aus Abwärtskompatibilitätsgründen zu C da.
    Die Nutzung ob class oder struct in C++ ist eher semantischer Natur



  • alles klar - danke!



  • Wenn du es sauber machen möchtest (und arbeit) Struct zur Klasse machen, Member private deklarieren, Get/Set-Methoden definieren und durch die Funktionen ergänzen, die zu dem Objekt gehören.

    Wenn du nur das C-Programm mit dem C++-Compiler übersetzen und durch C++-Code ergänzen willst, würde ich den C-Programmteil so wenig wie mögliche verändern.

    Is kein schlechtes Design, is halt C-Code in einem C++-Programm. 😉


Anmelden zum Antworten