Was ist ein Wrapper ? | C++ Community

PHOTO EMBED

Wed May 26 2021 20:58:04 GMT+0000 (Coordinated Universal Time)

Saved by @STS #c #c++ #wrapper

class Wrapper
{
 private:
  CLib *lib;

 public:
  Wrapper() { lib = lib_init(); } // Lib initialisieren
  ~Wrapper() { lib_cleanup(&init); } // Lib freigeben

  std::string DoSomething() 
  { 
    char *cstr = lib_get_str(); // String anfordern (malloc!)

    std::string s = str;  // in std::string kopieren

    lib_free_str(cstr); // String freigeben (free)

    return s; // std::string zurückgeben. Alles easy.
  }
};
content_copyCOPY

Stell dir vor du möchtest etwas bestimmtes erledigen und benötigst dafür eine bereits fertige Bibliothek, damit es möglichst plattformunabhängig und gut getestet ist. Du suchst im Internet und findest leider nur eine Bibliothek in C, aber nicht in C++. Die alte C Bibliothek ist zwar soweit genau das was du suchst, aber sie macht sehr viel mit free und malloc rum. Du bist also nicht dumm und bastelst dir um diese alten C-Funktionen einen Wrapper in Form einer Klasse. Diese Beispielklasse ist sehr vereinfacht (kein Zuweisungsoperator, ...). In der Realität würde man all diese Funktionen auch noch einbauen, da es sonst doch Speicherleaks gibt. Stichwort: Rule of the big three. Du hast also folgendes gebastelt:

https://www.c-plusplus.net/forum/topic/270976/was-ist-ein-wrapper