Hilfe bei den Klassen
-
Hi Ich bastele gerade an einem Übrungsprogramm Hier ein Auszug aus meinem Quellcode:
class Eins
{
friend class Zwei;public:
Eins(wert1=5.0); <----errorC2629:
private:
float wert1;
};
class Zwei
{
public:
float quadrat()
{
return wert1wert1;
}
float malx(float x)
{
return xwert1;
}
};Problem : Beim Versuch zu kompilieren kommt folgende Fehlermeldung :
error C2629: 'class Eins (' unerwartet
error C2238: Unerwartete(s) Token vor ';'Er Moniert die oeben markierten Zeilen.
Weiß jemand rat ?
-
parameterübergaben an konstruktoren brauchen bei der deklaration datentypen...
-
ich habe die zeile so geändert:
Eins(float wert1=5.0);
Erhaöte daraufhin weiterhin die Fehlermeldung error C2065: 'wert1' : nichtdeklarierter Bezeichner
Daraufhin erhalte ich bei der Zeile in der Class Zwei
return wert1*wert1;
folgende Meldung :warning C4244: 'return' : Konvertierung von 'int' in 'float', moeglicher Datenverlust
Ich habe aber nicht eine int in meinem Code
-
class Eins { friend class Zwei; public: Eins(wert1=5.0); <----errorC2629: private: float wert1; }; class Zwei { public: float quadrat() { return wert1*wert1; } float malx(float x) { return x*wert1; } };
So nun ist es auch formatiert...
Seit wann ist eine Wertzuweisung bei der Deklaration möglich ?
Und was bedeutet das ? Ich vermute mal, das sind optionale Parameter...In der Klasse Zwei wird der Wert wert1 nicht deklariert, das heisst, er
ist unbekannt. Falls du mit VC arbeitest, ist mir der Grund klar,
weshalb er die Warnung ausgibt. VC sieht eine neue Variable,
gibt ihr automatisch den Datentyp int und bricht die kompilierung dann ab.
Das ist typisch.
mfg BlueShift
-
Woher soll denn 'Zwei' wert1 kennen?
btw:
kann es sein, dass dein Ctor so aussehen soll:
Eins(float value=0.5f) : wert1(value) {}
?
-
Hi,
ich denke mal, das hier entspricht deinen Vorstellungen. Hab deine Idee jetzt mal so hingebastelt, dass sie logisch und syntaktisch sinn ergibt.Is aber absoluter Schwachsinn, das Prinzip so aufzuziehen, die ganze zweite Klasse kannst du dir sparen...
class Eins { private: float wert1; public: friend class Zwei; Eins(float wert1p=5.0) : wert1(wert1p){} }; class Zwei { private: Eins eins; public: Zwei(float wert1p = 5.0) : eins(wert1p){} float quadrat() { return eins.wert1*eins.wert1; } float malx(float x) { return x*eins.wert1; } };
MFG, '][' !
-
Hallo,
in eine Klassen-Deklaration (Beschreibung) gehören grundsätzlich keine Werte bzw. Rückgabewerte.
Die müssen in die Definition!
z.B.:// Deklaration:
Class Eins
{
public:
int Eins(int wert);};
-
-
Ich merke schon noch mal hinsetzen und überlegen
Ich habe das nun so geändert, will aber immernoch nciht so ganz
vorallem in class Zweiclass Eins { friend class Zwei; public: Eins() { float wert1=5.0; }; private: float wert1; }; class Zwei { public: float quadrat() { return wert1*wert1; } float malx(float x) { return x*wert1; } };
-
das vielleicht ?
class Eins { public: Eins ( float wert = 5.0 ):wert1 ( wert ) {}; protected: float wert1; }; class Zwei : public Eins { public: float quadrat () { return wert1 * wert1; }; float malx( float x ) { return x * wert1; }; };
was auch immer