Funktionen in allen Klassen bereitstellen



  • Hallo Leute,

    habe mal wieder eine Frage. Folgende Beispielsituation: Ich habe 3 Klassen (A, B und C). Klasse A erbt die Klassen B und C, also eine einfache Mehrfachvererbung. Nun möchte ich in allen Klassen eine Log-Funktionalität integrieren. Was wäre dafür der beste Lösungsansatz?

    Mir sind jetzt 2 Optionen eingefallen:
    1. Ich erzeuge eine Log-Klasse, die von den Klassen B und C via "virtual public MyLogClass" geerbt werden.
    2. Ich erstelle einen Namensraum mit den benötigten Funktionen, auf die alle Klassen zugreifen können.

    Hat jemand mit sowas Erfahrungen gemacht? Ist es ein schlechter Programmierstil, wenn man Funktionen in Klassen verwendet, die nicht in dieser gekapselt sind? (in meinem Fall sowas wie setLogMessage(std::string message), die in allen Programmteilen verfügbar sein soll)

    viele Grüße,
    SBond



  • Freie Funktionen sind ja kein Teufelszeug. Wenn Deine Klassen nicht primär dem loggen dienen, dann würde ich die Klassen auch nicht durch zusätzliche Funktionalitäten komplizierter machen. Wahrscheinlich brauchst Du das später auch in D und E und in F auch noch mal.

    Hier ist ein Beispiel, wie ich das mal gemacht habe log.h, log.cpp. Das darfst Du auch gerne verwenden.

    mfg Torsten



  • cool danke 😃

    Muss mich da noch etwas einarbeiten, da mein Wissen über C++ noch nicht so umfangreich ist. Dein Quellcode sieht wesentlich professioneller aus als meiner. Aber man wächst ja mit den Aufgaben. Wie ich sehe bietet die Boost-Lib auch shared pointer an. ...könnte für mich praktisch sein, da ich momentan nicht mit C++11 arbeite.

    Torsten Robitzki schrieb:

    Wahrscheinlich brauchst Du das später auch in D und E und in F auch noch mal.

    Ja da hast du Recht. So gesehen ist es die Frage wie man Code optimal organisiert. 😃


Anmelden zum Antworten