string objekte übergeben??



  • Hallo. ich muß ein Programm schreiben bei dem ich über einen Konstruktor ein String element übergebe, nur leider bin ich noch nicht so fit in c++.
    kann mir jemand sagen wie das richtig geht?? wäre sehr nett 🙂
    Programm:

    #ifndef CIRCLE_HPP
    #define CIRCLE_HPP

    #include <iostream>
    #include <string>
    using namespace std;

    #include"shape.hpp" // Klasse 1 (Basisklasse , Abstrakte Klasse)

    class Affe : public Tier
    {
    string geschlecht;
    double anzahl;
    public:
    Affe(double r=0, string mw);
    virtual double menge() const;
    virtual void draw() const;
    virtual double getValue() const;
    };
    Affe(double r,string mw)
    {
    r= anzahl;
    mw =geschlecht;
    }
    #endif CIRCLE_HPP

    im Hauptprogramm wird dann die Anzahl und das geschlecht übergeben:
    Affe ci1(10,"weiblich");

    Fehlermeldung:f:\c++\aktuell 07\zoo\circle.hpp(18) : error C2548: 'Affe::Affe' : Fehlender Standardparameter fuer Parameter 2



  • Nach einem Parameter mit Standardparameter (bei dir d = 0) darf keiner meher ohne Standardparameter mehr kommen.

    Lösung für Dich: Tausch einfach die zwei Parameter oder lass das = 0 weg



  • Hallo

    Das sieht so aus, als ob du im C'tor was vertauscht hast. Müsste die Zuweisung nicht andersherum sein. Außerdem kannst du ja auch Initialisierungslisten benutzen.

    chrische



  • Danke für die Tipps.
    Jetzt kommt die fehlermeldung nicht mehr...aber!!! 🙂
    irgendwie übernimmt er nur mist.
    habe ein cout in den Konstruktor gesetzt:

    Affe::Affe(string mw,double r)
    {
    r= anzahl;
    mw =geschlecht;

    cout<<"anzahl der Affen "<<anzahl<< "geschlecht "<<geschlecht<<endl;
    }

    und die ausgabe sieht so aus:
    anzahl der Affen -9.25596e+061geschlecht
    😕



  • Die Zuweisung erfolgt von rechts nach links, sprich Du weisst dem Parameter r den Inhalt der Membervariablen anzahl zu, und die ist noch nicht initialisiert worden.



  • Vielleicht sollte das eher so aussehen

    Affe::Affe(string mw,double r)
    {
      anzahl = r;
      geschlecht = mw;
    

    Wobei Anzahl besser int (oder unsigned int) und geschlecht bool bzw. ein nett definiertes enum sein sollten.



  • ohhh ohhhh. Ja klar. Super, funktioniert 😃
    Danke für die Hilfe



  • Hallo

    Das habe ich doch schon geschrieben. Du bedanhst dich für die Tipps, aber beachtest sie nicht?

    chrische


Anmelden zum Antworten