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_HPPim 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