problem mit c++ klassen + vererbung



  • bitte kann mir jemand helfen:
    ich frage mich, warum in der main funktion nicht auf die vererbten elemente von CHaus zugegriffen werden kann, was mach ich falsch ?

    #include <stdio.h>
    #include <string.h>
    
    class CHaus {
            protected:
                    double A;
                    int nStock;
            public:
                    void setDaten(double a,int n) {
                            A=a;
                            nStock=n;
                    }
                    void getDaten(double*a,int*n) {
                            *a=A;
                            *n=nStock;
                    }
    };
    
    class CMehr:public CHaus {
                    int nWohn;
            public:
                    void setDaten(int n) {
                            nWohn=n;
                    }
                    void getDaten(int*n) {
                            *n=nWohn;
                    }
    };
    
    int main() {
            CMehr a;
    
            double A;
            int nStock,nWohn;
            a.setDaten(13.5,5);
            a.setDaten(10);
            a.getDaten(&A,&nStock);
            a.getDaten(&nWohn);
    
            printf("%lf\t%d\t%d\n",A,nStock,nWohn);
    
            return 0;
    }
    


  • Überladung funktioniert nicht über Vererbungshierarchien hinweg. Du kannst das mit einer using-Deklaration in CMehr erreichen.



  • ich hab es lösen können:

    int main() {
            CMehr a;
    
            double A;
            int nStock,nWohn;
            a.CHaus::setDaten(13.5,5);
            a.setDaten(10);
            a.CHaus::getDaten(&A,&nStock);
            a.getDaten(&nWohn);
    
            printf("%lf\t%d\t%d\n",A,nStock,nWohn);
    
            return 0;
    }
    


  • oder du machst es mit virtuellen funktionen... schau dir dazu mal nen paar tutorials an...


Anmelden zum Antworten