inheritance probleme (teil 2)



  • Hey Leute,
    Ich habe folgendes Problem:
    Ich habe eine Virtuelle Klasse
    CommandSender.h

    class CommandSender
    {
    public:
        virtual void sendMessage(std::string message) = 0;
    };
    

    Die an Player.h und ConsoleCommandSender.h vererbt wird

    //Player.h
    class Player : public CommandSender
    {
    public:
        ...Mein Code...
    };
    //ConsoleCommandSender.h
    class ConsoleCommandSender : public CommandSender
    {
    public:
        ConsoleCommandSender() : CommandSender() {} //TODO
    
        void sendMessage(std::string message);
    };
    

    Und dabei ein weiteres beispiel bei meiner Server klasse erstellt:

    //Server.h
    class Server
    {
    public:
        Server();
        CommandSender ConsoleSender;
        ...Mehr Codes...
    };
    //Server.cpp
    Server::Server()
    {
        ...Meine Codes...
        ConsoleSender = ConsoleCommandSender{};
    }
    

    und in einer funktion rufe ich die sendMessage() funktion noch auf aber ich glaube das kann man sich denken...
    jedenfalls ist mir aufgefallen das dies nicht funktioniert (durch die abstrakte klasse) weshalb ich mich frage wie ich den Code zum laufen bringen könnte

    Freue mich auf eine Antwort 🙂



  • In dem Du eine Klasse erstellst, die von der abstrakten Klasse erben laesst und die dann instanziierst, dass hast Du doch schon bei den anderen beiden Klassen gemacht.
    Du darfst nur nicht CommandSender direkt als Klasse/Objekt verwenden.

    Wenn Du Veerbung verwendest solltest Du darauf achten, dass der Destruktor definiert wird und mit "virtual" versehen ist, ansonsten enstehen Memory Leaks, wenn Du e.g. an einer Stelle nur einen Basisklassen Pointer hast und dann darauf delete ausfuehrst.


Anmelden zum Antworten