Zeiger auf Rückgabewert andere Klasse



  • Hallo.

    Würde gerne einer Methode einen Zeiger auf eine Variable übergeben. Der Wert auf den der Zeiger verweisen soll ist aus einer anderen Klasse.

    template <class T>
    void CClass1::Add(const CString &name, T* value)
    {
      ...
    }
    
    m_class1->Add(m_name, &m_class2->Value);
    

    Nun erhalte ich in der folgende Fehlermeldung im Aufruf: '&' erwartet L-Wert.

    Gibts hier ne Lösung?



  • laupert schrieb:

    Hallo.

    Würde gerne einer Methode einen Zeiger auf eine Variable übergeben. Der Wert auf den der Zeiger verweisen soll ist aus einer anderen Klasse.

    template <class T>
    void CClass1::Add(const CString &name, T* value)
    {
      ...
    }
    
    m_class1->Add(m_name, &m_class2->Value);
    

    Nun erhalte ich in der folgende Fehlermeldung im Aufruf: '&' erwartet L-Wert.

    Gibts hier ne Lösung?

    Hallo.
    Was für einen Datentyp hat

    m_class2->Value
    

    . Meiner Meinung muss es vom type T sein,



  • Wieso dass den. T kann jeden x beliebigen Typ annehmen. Das ist ja der Sinn von einer Templateklasse. In meinem Fall ist es gerade ein double.

    Aber daran dass es ein Templateparmeter ist kann es eigentlich nicht liegen.


  • Mod

    Ist m_class2->Value evtl. const?



  • Habe gerade selber nochmals nachgeschaut und überlegt :-).
    Nein const nicht. Aber halt auch keine Referenz sondern nur eine Kopie. Das wird das Problem sein.
    Die Frage die sich mir nun stellt sollte man im allgemeinen den Rückgabewert einer Methode als Referenz zurückgeben oder doch als Kopie?



  • Das kommt darauf an was du damit machen willst. Wenn du ihn nicht verändern willst reict eine Kopie



  • Ist m_class2->Value evtl. const?

    Aber wenn es nun eine Referenz wäre, dürfte bzw. müsste sie doch sogar const sein, ich will ja nicht verändern nur abprüfen!


  • Mod

    Nein! Du willst einen T*! Der ist nicht const. Dann musst Du das Template auf const T* umbauen!


Anmelden zum Antworten