Instanz erzeugen



  • Guten Tag ,

    Es geht um eine Aufgabe bei der ich noch nicht zurecht komme:

    http://s7.directupload.net/images/140919/temp/6i8lpnc2.png

    class Dame:Stein{
    }

    Dame schwarz;
    Dame weiss;

    Dame schwarz.Typ='D';
    Dame schwarz.Farbe=true;
    Dame weiss.Typ='D';
    Dame weiss.Farbe=false;

    Und wollte ein Feedback dazuhaben ­čÖé

    Vielen dank f├╝r die Hilfe
    Gruss



  • Was ist das f├╝r ein Abfallcode rechts im Bild? Ist das mit Stein* , char und Init ernst gemeint? Wo "lernst" du C++ wenn man fragen darf?

    Was bitte ist ein "Nachfahre"? Immer diese Begriffsfindung. Du hast ├╝brigens das Semikolon nach } vergessen und au├čerdem wird wohl kaum private Vererbung erw├╝nscht sein. Aber wir haben Gl├╝ck und m├╝ssen die Klasse nur deklarieren:

    class Dame;
    

    Fertig.

    Uhm, das geht nicht da die Definition von Dame nicht gegeben ist. Daher kannst du die getrost auslassen.

    1. Initialisierung geschieht beim Konstruieren (und nicht mit Init !). Da die Definition fehlt auch auslassen.

    2. Ah, nun definieren wir die Klasse endlich.

    class Dame //Keine Ahnung was ein Nachfahre sein soll...
    {
        int Move(int, char)
        {
            //Welches Brett ist gemeint? Wei├č keiner so genau, dasselbe gilt f├╝r das Schriftzeichen, das wir ├╝bergeben bekommen haben
            return 42;
        }
    };
    


  • Ist zwar shitty Code (Aufgabenstellung und deiner), aber sollte gen├╝gen.

    Ich w├╝rde mich nach anderen Lernquellen umschauen. Dem Bild zu folge ist deine Quelle wirklich keine gute.



  • An einer Uni ­čśë

    1. Wird wohl Vererbung gemeint sein. Also
    class Dame:Stein;
    

    ?
    2,3) Das ganze ist eher aus der reinen Theorie Perspektive zu sehen. 3) K├Ânnte also passen ?
    4) Die reihen des Spielbretts sind von 'a' bis 'h' und die Felder der Reihe von 1 bis 4 nummeriert.

    Gruss

    Edit: War ne Klausuraufgabe



  • newinc schrieb:

    An einer Uni ­čśë
    [...]
    Edit: War ne Klausuraufgabe

    Und sowas wird staatlich subventioniert. Kopf -> Tisch

    newinc schrieb:

    1. Wird wohl Vererbung gemeint sein. Also
    class Dame:Stein;
    

    ?

    In Deklarationen (wie auf dem Bild gefordert) wird nicht Vererbt, das geschieht erst in der Definition. Und da sollte man noch die Art der Vererbung angeben, also class Dame : public Stein {}; beispielsweise (ansonsten ist es bei class standardm├Ąssig private , was ziemlich sicher nicht erw├╝nscht ist).

    newinc schrieb:

    2,3) Das ganze ist eher aus der reinen Theorie Perspektive zu sehen.

    Und? Dennoch kann man nicht instanziieren solange man die Definition nicht kennt. Aber meinetwegen: Ja deine Version ist richtig solange ein Defaultkonstruktor vorhanden ist und dieser das tut, was man m├Âchte.

    newinc schrieb:

    1. K├Ânnte also passen ?

    Ne, wieso schreibst du den Typen hin? Den Typen schreibt man bei der Deklaration und bei der Definition von Variablen hin, sonst nirgends.

    [quote="newinc"4) Die reihen des Spielbretts sind von 'a' bis 'h' und die Felder der Reihe von 1 bis 4 nummeriert.[/quote]Nur weil man den Feldern a - h sagt soll man sie so auch speichern? Halte ich f├╝r groben Unfug. Beim Programmieren beginnen Indices immer bei 0. Auch hier.



  • Eine Dame als von Spielstein abgeleitete Klasse zu definieren bei Checkers ist gro├čer Bl├Âdsinn. Bei der Promotion zu einer Dame muss also der Spielstein dynamisch gel├Âscht und eine Dame dynamisch erstellt werden? Und das obwohl es in der Klasse Stein schon den Member Typ zur Klassifikation von Damen hat?!? wtf?
    Mir fehlt daher der virtuelle Destruktor von Stein . Ebenso wie mir der Smartpointer in Feld fehlt.

    Immer alles m├Âglichst kluk / kuul l├Âsen wollen (damit meine ich den Prof oder welcher Hans auch immer diesen Code fabriziert hat) und dann solche Fehler zu begehen. ­čĹÄ



  • @nerdrage Hier geht es nicht um die Logik der Aufgabestellung, noch um ein perfektes Codebeispiel.
    Ja die Aufgabe macht eher wenig Sinn und ist unsauber, aber das ist v├Âllig irrelevant.
    Virtuelle Destruktoren und vorallem Smart Pointer brauchen newinc vorerst auch nicht interessieren.

    @newinc

    class Dame : public Stein // Wie nerdrage schon sagte, wird hier wohl auch public gewollt sein.
    {
      // ...
    };
    
    // ----
    
    Dame schwarz;
    schwarz.Typ = 'D';   // Wie nerdrage ebenfalls schon sagte, w├╝rde
    schwaz.Farbe = true; // solch ein Code eher in den Konstruktor fallen.
    
    Dame weiss;
    weiss.Typ = 'D';
    weiss.Farbe = false;
    

    So in die Richtung.



  • Ich danke dir!! ­čÖé

    Kann ich noch paar Fragen "verbessern" lassen? Hab noch welche gemacht:

    http://s7.directupload.net/images/140923/mnskzyj8.png

    3,1)
    clQ Quada;
    clQ Quadrata;

    3,2)

    int Quadrat(){
       int i;
       for (i=0;i<=M);i++)
          a[i]=i*i;
    };
    

    3,3)

    class clQ{
      public:
        int Quadrat(void);
        int Mittel(int n);
      private:
        //...
    };
    int Mittel(int n){
      int i,sum,moy;
    
      sum=0;
      moy=0;
      for(i=0;i<=n;i++)
        sum=sum+a[i];
    
      moy=sum/i;
    
      return moy;
    };
    

    3,4)
    static int moy;

    Sieht das gut aus ?

    Und dann h├Ątte ich noch eine Aufgabe:
    http://s7.directupload.net/images/140923/nr6gvgtz.png

    2,1)

    clP Paket;
    

    2,2)

    clP Pakete[100];
    

    2,3)

    class clP{
      private:
        //...
      public:
        clP(); // Konstruktor
        int Write(Pak);
        int Read(*Pak);
    };
    

    Soll ich f├╝r die n├Ąchsten beiden Teilaufgaben eine Struct deklarieren um die Teilaufgaben besser zu l├Âsen ?

    2,4)
    2,5)

    Vielen dank und lG


Log in to reply