Referenzen im Konstruktor



  • Stimmt folgende Aussage:
    Referenzen im Konstruktor müssen konstant sein.
    ???

    MfG
    Stromberg



  • referenzen auf was? schreibt doch bitte mal ein bisschen mehr zu dem, was du meinst.
    so allgemein ist die antwort: nein.



  • Also z.B. bei:

    class A
    {
        A(int a); //Geht
        A(int &a); //Geht nicht, zumindestens hat sich mein Compiler vorhin darüber beschwert
        A(const int &a); //Geht
    };
    

    Darum hab ich gedacht das es da vll. so nä Regel gibt.

    MfG
    Stromberg



  • class A
    {
        A(int &a); 
    };
    

    Geht nur, wenn du auch einen veränderbaren Wert übergibst.

    Folgendes geht z.b. nicht:

    A i(42);
    

    Dies geht jedoch:

    int foo = 42;
    A i(foo);
    


  • Stromberg schrieb:

    ...

    class A
    {
        A(int a); //Geht
        A(int &a); //Geht nicht, zumindestens hat sich mein Compiler vorhin darüber beschwert
        A(const int &a); //Geht
    };
    

    ...

    Das stimmt soooo garantiert nicht. Das ist absolut korrektes C++ ... und das wird Dir Dein Compiler auch bestätigen.
    WENN Du einen COmpilerfehler bekommst, dann wird das daran liegen, wie Du den Code einsetzt
    a) bei der Implementierung von A::A() oder
    b) beim Aufruf.

    Gruß,

    Simon2.


Anmelden zum Antworten