mikrocontroller.net

Forum: PC-Programmierung Problem mit Vererbung


Autor: Stefan L. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Liebe C++ Könner!

Ich habe da ein Problem.

Ich habe ein kleines Programm geschrieben, welches die Fläche eines 
T-Trägers ausrechnen soll. Allerdings gibt es Probleme bei der 
Vererbung.

Ich habe in der letzten Zeile meines Codes keinen Zugriff auf eine 
Mehtode in meiner Abgeleiteten Klasse.

Könnt ihr mir vielleicht helfen?

Was mache ich falsch?

#include <stdio.h>

class DTT_GEO
{
  //protected:
  public:
      int b;
      int h;
      int d;
      int laenge;
      int q_flaeche;

    
      void eingabe_breite(void);
      void eingabe_hoehe(void);
      void eingabe_dicke(void);
      void eingabe_laenge(void);

      void ausgabe_breite(void);
      void ausgabe_hoehe(void);
      void ausgabe_dicke(void);
      void ausgabe_laenge(void);
      void ausgabe_querschnittsflaeche(void);
      void ausgabe_volumen(void);
};


class DTT_MAT:public DTT_GEO
{
  private:
      int artgewicht;
      int gewicht;

  public:
      void eingabe_gewicht(void);
      void eingabe_artgewicht(void);
      
      void ausgabe_gewicht(void);
      void ausgabe_artgewicht(void);
  

};

void DTT_GEO::eingabe_breite(void) {scanf("%d",&b);}
void DTT_GEO::eingabe_hoehe(void) {scanf("%d",&h);}
void DTT_GEO::eingabe_dicke(void) {scanf("%d",&d);}
void DTT_GEO::eingabe_laenge(void) {scanf("%d",&laenge);}
void DTT_MAT::eingabe_artgewicht(void) {scanf("%d",&artgewicht);}
void DTT_MAT::eingabe_gewicht(void) {scanf("%d",&gewicht);}

void DTT_GEO::ausgabe_breite(void) {printf("%d",b);}
void DTT_GEO::ausgabe_hoehe(void) {printf("%d",h);}
void DTT_GEO::ausgabe_dicke(void) {printf("%d",d);}
void DTT_GEO::ausgabe_laenge(void) {printf("%d",laenge);}
void DTT_MAT::ausgabe_artgewicht(void) {printf("%d",artgewicht);}
void DTT_MAT::ausgabe_gewicht(void) {printf("%d",gewicht);}

int main (void)
{
    DTT_GEO Werte;

    printf("Geben Sie bitte die Daten fuer einen Doppel-T-Traeger an:\n");
    printf("Fußbreite:\t\t");
    Werte.eingabe_breite();
    printf("\nHoehe:\t\t");
    Werte.eingabe_hoehe();
    printf("\nMaterialdicke:\t\t");
    Werte.eingabe_dicke();
    printf("\nLaenge:\t\t");
    Werte.eingabe_laenge();
    printf("\nArtgewicht:\t\t");
    Werte.eingabe_artgewicht();

    printf("\n\nDer Doppel-T-Traeger hat folgende geometrische Daten\n");
    printf("---------------------------------------------------------------\n");
    printf("\nBreite des Fußes\t\t:\t\t"); Werte.ausgabe_breite();
    printf("\nTraeger Hoehe\t\t:\t\t");Werte.ausgabe_hoehe();
    printf("\nMaterialdicke\t\t:\t\t");Werte.eingabe_dicke();
    printf("\nLaenge\t\t:\t\t");Werte.ausgabe_laenge();
    printf("\nQuerschnittsflaeche\t\t:\t\t");Werte.ausgabe_querschnittsflaeche();
    printf("\nVolumen\t\t:\t\t");Werte.ausgabe_volumen();
    printf("\n---------------------------------------------------------------\n");
    printf("Der Doppel-T-Traeger hat folgende Gewichts-Daten:\n");
    printf("\n---------------------------------------------------------------\n");
    printf("Artgewicht\t:\t"); Werte.ausgabe_artgewicht();                //Warum kein Zugriff auf abgeleitete Klasse?

    
    
    
   
}






Danke!

Gruß
Stefan

Autor: Kalli L. (knl)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stefan L. schrieb:
> int main (void)
> {
>     DTT_GEO Werte;
>
>     printf("Geben Sie bitte die Daten fuer einen Doppel-T-Traeger an:\n");

sollte das nicht
int main (void)
{
    DTT_MAT Werte;

    printf("Geben Sie bitte die Daten fuer einen Doppel-T-Traeger 
an:\n");

heissen? Oder die Klassen andersrum ableiten?

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stefan L. schrieb:

> int main (void)
> {
>     DTT_GEO Werte;

....


>     printf("Artgewicht\t:\t"); Werte.ausgabe_artgewicht();
> //Warum kein Zugriff auf abgeleitete Klasse?

Ein DTT_GEO Objekt hat diese Methode nicht.

Ein DTT_MAT Objekt hätte sie. Aber DTT_GEO nicht.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.