Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
01.03.2009, 21:15
Protestallianz



Hi,
lerne gerade Klassen.
Aufgabe: Eine Konto soll mit Heinzelmann und ein Konto soll mit Unbekannt gefüllt werden, letzteres aber ohne Übergabeparameter.

Ich komme hier nicht weiter, kann mir einer sagen warum das nicht geht??

Quellcode:#include <iostream.h>
#include <conio.h>

class Sparkonto
{
      private:
         int nummer;
         string kontoinhaber;
         double kontostand;
         double habenzinssatz;

      public :
      iniuni (void);
      Sparkonto (string, double, double);
      //~Sparkonto();
      //~iniuni();
};

Sparkonto::iniuni (void)
{
kontoinhaber="Unbekannt";
kontostand=0.0;
habenzinssatz=2.0;
}

Sparkonto::Sparkonto(string n, double st , double zs)
{
kontoinhaber=n;
kontostand=st;
habenzinssatz=zs;
}

/*
Sparkonto::~Sparkonto()
{
}
iniuni::~iniuni()
{
}
*/
int main()
{

Sparkonto Sparkonto2 ("Heinzelmann", 2500.0, 2.0);
iniuni Sparkonto1 ();


return 0;
}
Bekomme dann folgende Fehlermeldung
in der letzten Zeile (vor Return)!

Quellcode:[C++ Warnung] Unit1.cpp(24): W8070 Funktion sollte einen Wert zurückgeben.
[C++ Fehler] Unit1.cpp(45): E2451 Undefiniertes Symbol 'iniuni'
[C++ Fehler] Unit1.cpp(45): E2379 In Anweisung fehlt ;

--

-GAMING-


Dieser Beitrag wurde am 01.03.2009 um 21:16 von Protestallianz bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
001
01.03.2009, 21:21
caedes



du solltest definieren, dass iniuni() void zurückgibt, sonst geht er vermutlich implizit davon aus, dass der int zurückgibt

"iniuni Sparkonto1 ();" macht garkeinen sinn.
dein destruktor-verschnitt für iniuni auch nicht

vllt solltest du dich nochmal mit dem unterschied zwischen klassen und funktionen/methoden und konstruktoren beschäftigen?

--

caedes

Deutschland rückt nach Einschätzung der Sicherheitsbehörden im Superwahljahr verstärkt ins Visier von Terroristen.


Dieser Beitrag wurde am 01.03.2009 um 21:22 von caedes bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
002
01.03.2009, 21:31
Protestallianz



Ja das Problem ist, wir sollen mit 2 Konstruktoren arbeiten, sonst wäre es ja einfacher!
mit iniuni Sparkonto1 soll er ein weiters Konto anlegen mit den Unbekannt Werten!

--

-GAMING-


Dieser Beitrag wurde am 01.03.2009 um 21:32 von Protestallianz bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
003
01.03.2009, 21:37
caedes



informier dich bitte gründlich, du hast offenbar nicht verstanden, was ein konstruktor ist. tipp: iniuni() ist eine methode und kein konstruktor.

die includes sind übrigens auch grenzwertig: conio.h ist irgendwas für msdos und generell haben c++-includes (im ggs zu denen bei C) kein .h am ende

lies das nochmal vernünftig nach.. entweder im begleitmaterial der vorlesung/des unterrichts oder lehrbuch oder wasauchimmer du da hoffentlich bekommen hast.
oder such online-tutorials oder sowas.

so wird das zumindest nix, da du offenbar keinen blassen schimmer hast, was du da tust.

--

caedes

Deutschland rückt nach Einschätzung der Sicherheitsbehörden im Superwahljahr verstärkt ins Visier von Terroristen.

zum Seitenanfang zum Seitenende Profil || Suche
004
01.03.2009, 21:42
Protestallianz



So stehts im Buch und der Lehrer meint, dass das .h weggelassen werden kann, wenn die headerdatei im selben ordner ist.
Ich möchte zwei Konstruktoren ertellen, darum geht es ja.
2Konstruktoren, beim einen mit Übergabeparameter beim anderen ohne!

Habe verstanden, warum du meinetest uni wäre eine Methode, dachte der wüsste nicht wann er den Konstruktor unterscheiden soll.
Sehe ich dass richtig, dass jetzte Angstellter1 Heinzelmann und Angestelllter2 Unbeknannt ist??
So müsste es funktionieren:
Quellcode:#include <iostream.h>
#include <conio.h>

class Sparkonto
{
      private:
         int nummer;
         string kontoinhaber;
         double kontostand;
         double habenzinssatz;

      public :
      Sparkonto ();
      Sparkonto (string, double, double);
      //~Sparkonto();
      //~iniuni();
};

Sparkonto::Sparkonto ()
{
kontoinhaber="Unbekannt";
kontostand=0.0;
habenzinssatz=2.0;
}

Sparkonto::Sparkonto(string n, double st , double zs)
{
kontoinhaber=n;
kontostand=st;
habenzinssatz=zs;
}

/*
Sparkonto::~Sparkonto()
{
}
iniuni::~iniuni()
{
}
*/
int main()
{

Sparkonto Sparkonto1 ("Heinzelmann", 2500.0, 2.0);
Sparkonto Sparkonto2();


return 0;
}

--

-GAMING-


Dieser Beitrag wurde am 01.03.2009 um 21:50 von Protestallianz bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
005
01.03.2009, 22:06
caedes



Zitat:
Protestallianz postete
So stehts im Buch und der Lehrer meint, dass das .h weggelassen werden kann, wenn die headerdatei im selben ordner ist.
entweder verwechselst du da was oder er hat keine ahnung

der code da könnte so funktionieren.
anmerkung: variablennamen fangen nach konvention mit nem kleinbuchstaben an, also solltest du "Sparkonto1" in "sparkonto1" umbenennen oder so (analog für Sparkonto2)

--

caedes

Deutschland rückt nach Einschätzung der Sicherheitsbehörden im Superwahljahr verstärkt ins Visier von Terroristen.


Dieser Beitrag wurde am 01.03.2009 um 22:06 von caedes bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
006
01.03.2009, 22:15
Protestallianz



Geht ja, aber wenn ich jetzt zum Testen mir die

Namen ausgeben lasse

Quellcode://im Classteil
public :
      string zeigKontoinhaber(void);
      Sparkonto ();
      Sparkonto (string, double, double);

Quellcode://Zwishen main und der Class
string Sparkonto::zeigKontoinhaber(void)
{
return kontoinhaber;
}
Quellcode://Im Mainteil
name=Sparkonto1.zeigKontoinhaber();
namey=Sparkonto2.zeigKontoinhaber();
cout<<"Konto1 "<<name;
cout<<"\nKonto2 "<<namey;

--

-GAMING-


Dieser Beitrag wurde am 01.03.2009 um 22:16 von Protestallianz bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
007
02.03.2009, 09:47
theDon



void in der Paramaterliste ist in C++ kompletter Schwachsinn.

--

\o tanz den naziprau! o/

And more than ever, I hope to never fall,
Where enough is not the same it was before

zum Seitenanfang zum Seitenende Profil || Suche
008
02.03.2009, 13:06
Kriz



...und alles so ohne Referenzen...

--

K:R-I)Z++
"CSS ist cascading style sheets. Und nicht so'n Ranzspiel." - dp
In memory of Voice († 2005/03/30)

zum Seitenanfang zum Seitenende Profil || Suche
009
02.03.2009, 14:16
LeJean



Ich versteh #006 nicht so recht - was passiert denn so schlimmes (bzw. was passiert nicht), wenn du die Namen ausgeben lassen willst?

--


Dieser Beitrag wurde am 02.03.2009 um 14:30 von LeJean bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
010
02.03.2009, 17:31
Protestallianz



Bei namey=Sparkonto2.zeigKontoinhaber();
meckert der Compiler links davon fehlt . oder .* was ich aber für quatsch halte!

Referenzen tun hier doch eigentlich gar nich Not oder!? Bzw das habe ich auch meinen Lehrer gefragt und der meinte, das wäre nur verwirrend. Der will ja auch die Headerdatei mit .h einbinden.
ac ja der Editor ist von Borlnad, falls das mal jemand wissen wollte!

--

-GAMING-


Dieser Beitrag wurde am 02.03.2009 um 17:34 von Protestallianz bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
011
02.03.2009, 17:53
Adrian_Broher
Admin


Zitat:
Protestallianz postete
Bei namey=Sparkonto2.zeigKontoinhaber();
meckert der Compiler links davon fehlt . oder .* was ich aber für quatsch halte!
98% wahrscheinlichkeit, dass die namey variable nirgends definiert wurde.

Zitat:
Protestallianz postete
Referenzen tun hier doch eigentlich gar nich Not oder!? Bzw das habe ich auch meinen Lehrer gefragt und der meinte, das wäre nur verwirrend.
Es vermeidet eine unnoetige Kopieroperation.

Zitat:
Protestallianz postete
Der will ja auch die Headerdatei mit .h einbinden.
Der Mann soll sich mal mit den Specs beschaeftigen. Die Standard Library Header haben kein .h Suffix.

--

There is nothing wrong with high standards. It's your problem that you don't meet them.
If you think it's simple, then you have misunderstood the problem.
When a customer says "nothing has changed", assume they're lying.

zum Seitenanfang zum Seitenende Profil || Suche
012
02.03.2009, 21:31
Protestallianz



So habe mich mit einem Freund nochmal drüber unterhhalten der hatte das selbe Problem auch
@Broher Variable war deklariert muss aber heißen:
Quellcode:Sparkonto Sparkonto2;
statt:
Quellcode:Sparkonto Sparkonto2();

--

-GAMING-


Dieser Beitrag wurde am 02.03.2009 um 21:31 von Protestallianz bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
013
02.03.2009, 22:22
Bluthund



Adrian meinte, dass namey nicht deklariert wurde.
Auch wenn es nur ein Beispiel ist, solltest du dir nicht angewöhnen mit Gleitkommazahlen Geldbeträge zu handeln.

edit: Hrm beim nochmaligen Lesen deines Posts kommt bei mir etwas Verwirrung auf ob dein "Variable war deklariert" sich auf den string oder das Sparkonto-Objekt aus den darauffolgenden Zeilen bezieht (worauf ich meine Aussage beziehe). Wahrscheinlich aber wohl ersteres womit meine erste Aussage ignoriert werden darf.

--

The C language combines all the power of assembly language with all the ease-of-use of assembly language.
"humorig is n blödwort :>" by -CarniGGeLjumpR-


Dieser Beitrag wurde am 02.03.2009 um 23:12 von Bluthund bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
014
03.03.2009, 14:43
Protestallianz



Es war auf den String gemeint, ist in der Aufgabe vorgeschrieben mit double, wie würdest du es denn machen?
Gibt es eine bessere Methode? Und warum nicht so?

--

-GAMING-

zum Seitenanfang zum Seitenende Profil || Suche
015
03.03.2009, 15:00
theDon



Fliesskommazahlen haben eine relative Genauigkeit von n Dezimalstellen (bei double precision sind das etwa 15-17 Stueck). Je groesser die Zahl vor dem Komma wird, desto ungenauer wird der Teil hinter dem Komma.

Das ist fuer Geldbetraege ziemlich bescheuert, deshalb rechnet man da mit Fixkommazahlen oder direkt in Cent-Bruchteilen.

--

\o tanz den naziprau! o/

And more than ever, I hope to never fall,
Where enough is not the same it was before

zum Seitenanfang zum Seitenende Profil || Suche
016
03.03.2009, 18:44
Protestallianz



Ahh Stimmt macht Sinn, werde ich auch mal frei verändern!
Danke!

--

-GAMING-

zum Seitenanfang zum Seitenende Profil || Suche