template Frage



  • Warum kommt die Meldung "warning C4355: this' : wird in Initialisierungslisten fuer Basisklasse verwendet" für den Konstruktor von UseTemplate und wie kann ich das Problem beheben?

    // Template-Klasse
    template<class T>
    class Template
    {
    private:
    	T* m_Value;
    public:
    	Template(T*);
    };
    
    template<class T>
    Template<T>::Template(T* Value)
    {
    	m_Value = Value;
    }
    
    // UseTemplate-Klasse
    class UseTemplate
    {
    private:
    	Template<UseTemplate> m_Value;
    public:
    	UseTemplate();
    };
    
    UseTemplate::UseTemplate(): m_Value(this)
    {
    }
    

    Ich hoffe meine Frage war kurz und verständlich 🙂





  • Super... kurze Frage, schnelle Antwort! Danke 😃

    Jetzt hab ich aber noch eine Frage zum folgenden

    template<class ParentClass, typename Type, Type(ParentClass::*Get)()>
    class ChildClass
    {
    public:
    	ParentClass *m_pParent;
    
    	Type GetParent() { return (m_pParent->*Get)(); }
    };
    

    Ich möchte auf die Member-Funktion Get() von ParentClass zugreifen, warum kommt die Meldung: "error C2973: 'ChildClass' : Ungueltiges Vorlagenargument 'Get'" und wie kann man es richtig machen?

    Info: die Member-Funktion Get() hat in ParentClass einen anderen Namen.


  • Mod

    Anfaenger2003 schrieb:

    Super... kurze Frage, schnelle Antwort! Danke 😃

    Jetzt hab ich aber noch eine Frage zum folgenden

    template<class ParentClass, typename Type, Type(ParentClass::*Get)()>
    class ChildClass
    {
    public:
    	ParentClass *m_pParent;
    
    	Type GetParent() { return (m_pParent->*Get)(); }
    };
    

    Ich möchte auf die Member-Funktion Get() von ParentClass zugreifen, warum kommt die Meldung: "error C2973: 'ChildClass' : Ungueltiges Vorlagenargument 'Get'" und wie kann man es richtig machen?

    Info: die Member-Funktion Get() hat in ParentClass einen anderen Namen.

    Get ist hier der name des paramters, welche memberfunktion du letzlich für die instantiierung benutzt ist unerheblich. du hast es hier mit einem defekt älterer versionen von visual c++ zu tun, die schwierigkeiten mit solchen non-type-template-parametern haben. iirc wird das mit vc++8.0 unterstützt.



  • 😮 OK, danke... 3, 2, 1, ... so hab mir die Visual C++ 2005 Express Edition geholt! Ist echt schön 🙂

    https://www.microsoft.com/germany/msdn/vstudio/products/express/default.mspx


Anmelden zum Antworten