Einfache Friendfunktion Aufruf aus der main?



  • irgendwie kriege ich das nicht hin.

    class NEU {
    private:
    	double secret;
    public:
    	NEU ( int a=999) { secret = a;}
    	friend class NEU_NEU;
    };
    
    class NEU_NEU 
    {
    private:
    	double boring;
    public: 
    	NEU_NEU ( double bb= 10) { boring = bb;}
    	void change ( NEU zx)
    	{  zx.secret = boring;  }
    };
    

    wenn ich aus der main nun die Funktion void change ( Neu zx)
    aufrufen will, wie mache ich das?

    ich denke irgendwie so, aber klappt nicht

    NEU_NEU v_neu;
    
    	v_neu.change();
    

    Vielen Dank
    komme einfach nicht drauf



  • Wo ist Dein Problem, außer das Du NEU an NEU_NEU als by Value und nicht by Reference übergibst?



  • wenn ich es so stehen habe, bekomme ich einen Fehler
    "Funktion akzeptiert keine 0 Argumente"

    also muss wohl in die Klammer der Funktion was rein.
    v_neu.change ();

    Leider weiß ich nicht was oder wie.

    Wenn ich ein cout in die Funtkion change hinzufüge, bekomme ich einfach nichts auf dem Bildschirm angegeben

    void change ( NEU zx)
    	{  zx.secret = b; 
    	cout << zx.secret;
    	}
    


  • int main()
    {
        NEU_NEU v_neu;
        v_neu.change(NEU(2));
    }
    

    Aber die Klassen sind doch Unfug.



  • **

    okay habs jetzt durch Zufall hinbekommen.**

    Wenn man eine Zahl, irgendeine in die Klammer schreibt funktioniert das ganze.
    zb.
    v_neu.change ( 111 );

    Jedoch, was genau "bewirkt" die Zahl in der Klammer?
    Kann mir das einer erklären?

    und warum klappt es nicht ohne Zahl?



  • volkard schrieb:

    int main()
    {
        NEU_NEU v_neu;
        v_neu.change(NEU(2));
    }
    

    Aber die Klassen sind doch Unfug.

    Auf deine Art funktioniert das auch. 🙂

    ja, die Klassen machen keinen Sinn,
    ich versuche einfach die korrekte Syntax auswendig zu lernen,
    weil es in dem Skript vom prof. unglaublich beschiessen erklärt ist. . .



  • Dieser Thread wurde von Moderator/in Martin Richter aus dem Forum MFC (Visual C++) in das Forum C++ (auch C++0x und C++11) verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • void change ( NEU zx)
    

    Das benötigt, wie der compiler völlig zutreffend gesagt hat, einen parameter vom Typ neu.

    Mit

    v_neu.change();
    

    Gibst du ihm aber keinen. => Fehler.
    Mit einer Zahl klappt es aus folgendem Grund, auch wenn es kein NEU ist. Durch den Konstruktor

    NEU ( int a=999) { secret = a;}
    

    kann er aus der Zahl nämlich ein NEU machen, und das übergibt er dann der Funktion "change".


Anmelden zum Antworten