Frage zu Vererbung & Templates



  • Hallo, ich habe folgendes Problem:

    Angenommen ich habe eine Templateklasse namens Message mit genau einem Typenparameter. Von dieser Templateklasse möchte ich nun eine Klasse namens DataMessage ableiten, wobei ich für den Typenparameter einen Datentyp einsetzen möchte, den ich erst in der Klasse DataMessage definieren kann, also etwa so:

    template <typename T> class Message
    {
    public:
    	Message (const T type, void* pData, const unsigned short nLength);
    	virtual ~Message ();
    
    private:
    	T m_type;
    	void* m_pData;
    	unsigned short m_nLength;
    
    public:
    	T getType () const { return m_type; }
    	void* getData () const { return m_pData; }
    	unsigned short getLength () const { return m_nLength; }
    };
    
    class DataMessage : public Message<DataMessage::MessageType>
    {
    public:
    	enum MessageType { /* ... */ };
    };
    

    Ist das nicht möglich, oder wie geht das? Falls nicht, gibt es einen anderen Weg, das gleiche Resultat zu erreichen?

    Vielen Dank im Voraus!



  • Ist nicht besonders hübsch, sollte aber klappen...

    class bar
    {
    public:
        enum MessageType { /* ... */ };
    }
    
    class DataMessage : public bar,public Message<bar::MessageType>
    {
    };
    

Anmelden zum Antworten