Hi,
ich habe mir mit c++ eine Klasse namens Artikel geschrieben, mit den Elementen artname (Artikelname), artnr (Artikelnummer) und artpreis (Artikelpreis).
Die Klasse selbst habe ich mit Prototypen und Inline-Methoden in eine Header Datei und die restlichen Methoden in eine extra Quelldatei geschrieben.
Wenn ich diese dann jedoch kompiliere, sagt mir der Kompiler ich hätte 20 Fehler in meinem Skript. Des Weiteren gibt er unzählige Fehlermeldungen für Fehler in Standartklassen von C++ aus, wie z.B. istream oder ostream .... .
Nun bin ich ein wenig ratlos ... ich hoffe ihr könnt mir weiter helfen:
Code:
/* ========================================================================== */
/* */
/* class_artikel.h */
/* Description */
/* */
/* ========================================================================== */
#ifndef _CLASS_ARTIKEL_
#define _CLASS_ARTIKEL_
#include <string>
using namespace std;
class Artikel
{
private:
string artname;
long artnr;
double artpreis;
public:
Artikel(const string&, long, double);
~Artikel();
void print();
string getartname() const { return artname; }
long getartnr() const { return artnr; }
double getartpreis() const { retrun artpreis; }
bool setartname(const string& name)
{
if(name.size() < 1) return false;
artname = name;
return true;
}
void setartnr(const long& nr) { artnr = nr }
void setartpreis(const double& preis) { artpreis = nr > 0.0 ? nr : 0.0; }
}
#endif
Code:
/* ========================================================================== */
/* */
/* class_artikel.cpp */
/* Description */
/* */
/* ========================================================================== */
#include "class_artikel.h"
#include <iostream>
#include <iomanip>
using namespace std;
int artanz = 1;
Artikel::Artikel(const string& name = "unbekannt", long nr = artanz, double preis = 0.0)
{
artname = name;
artnr = nr;
artpreis = preis;
cout << "\n\n Es wird ein Objekt für den Artikel " + artname + " angelegt.\n"
<< "Dies ist der " << artanz++ << "-te Artikel mit der Artikelnummer: " << artnr << endl;
}
Artikel::~Artikel()
{
cout << "Das Objekt für den Artikel " + artname + "wird zerstört.\n"
<< "Es gibt noch " << --artanz << " Artikel." << endl;
}
void Artikel::print()
{
long savedFlags = cout.flags();
cout << "Artikel Daten:\n"
<< "--------------------------------\n"
<< "Artikelnummer: " artnr << endl
<< "Name: " artname << endl
<< "Preis: " << fixed << setpresision(2) artpreis << endl;
cout.flags(savedFlags);
cout << " --- Weiter mit der Return-Taste --- ";
cin.get();
}
Heir noch meine Fehlermeldungen:
--------------------Konfiguration: class_artikel - Win32 Debug--------------------
Kompilierung läuft...
class_artikel.cpp
d:\microsoft visual studio\vc98\include\iostream(14) : error C2143: Syntaxfehler : Fehlendes ';' vor 'namespace'
n:\cpp\class_artikel.cpp(36) : error C2146: Syntaxfehler : Fehlendes ';' vor Bezeichner 'artnr'
n:\cpp\class_artikel.cpp(37) : error C2563: Listen der formalen Parameter stimmen nicht ueberein
n:\cpp\class_artikel.cpp(37) : error C2568: '<<' : Aufloesung der Funktionsueberladung nicht moeglich
könnte 'class std::basic_ostream<unsigned short,struct std::char_traits<unsigned short> > &__cdecl std::endl(class std::basic_ostream<unsigned short,struct std::char_traits<unsigned short> > &)' sein
d:\microsoft visual studio\vc98\include\ostream(377) : Siehe Deklaration von 'endl'
oder 'class std::basic_ostream<char,struct std::char_traits<char> > &__cdecl std::endl(class std::basic_ostream<char,struct std::char_traits<char> > &)'
d:\microsoft visual studio\vc98\include\ostream(372) : Siehe Deklaration von 'endl'
oder 'class std::basic_ostream<_E,_Tr> &__cdecl std::endl(class std::basic_ostream<_E,_Tr> &)'
d:\microsoft visual studio\vc98\include\ostream(367) : Siehe Deklaration von 'endl'
n:\cpp\class_artikel.cpp(37) : error C2146: Syntaxfehler : Fehlendes ';' vor Bezeichner 'artname'
n:\cpp\class_artikel.cpp(38) : error C2784: 'class std::basic_ostream<_E,_Tr> &__cdecl std::operator <<(class std::basic_ostream<_E,_Tr> &,const struct std::_Smanip<_Tm> &)' : Vorlagenargument fuer 'class std::basic_ostream<_E,_Tr> &' von 'class std
::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >' konnte nicht hergeleitet werden
n:\cpp\class_artikel.cpp(38) : error C2784: 'class std::basic_ostream<_E,_Tr> &__cdecl std::operator <<(class std::basic_ostream<_E,_Tr> &,const struct std::_Fillobj<_E> &)' : Vorlagenargument fuer 'class std::basic_ostream<_E,_Tr> &' von 'class std
::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >' konnte nicht hergeleitet werden
n:\cpp\class_artikel.cpp(38) : error C2784: 'class std::basic_ostream<_E,_Tr> &__cdecl std::operator <<(class std::basic_ostream<_E,_Tr> &,const class std::basic_string<_E,_Tr,_A> &)' : Vorlagenargument fuer 'class std::basic_ostream<_E,_Tr> &' von
'class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >' konnte nicht hergeleitet werden
n:\cpp\class_artikel.cpp(38) : error C2784: 'class std::basic_ostream<_E,_Tr> &__cdecl std::operator <<(class std::basic_ostream<_E,_Tr> &,const short *)' : Vorlagenargument fuer 'class std::basic_ostream<_E,_Tr> &' von 'class std::basic_string<char
,struct std::char_traits<char>,class std::allocator<char> >' konnte nicht hergeleitet werden
n:\cpp\class_artikel.cpp(38) : error C2784: 'class std::basic_ostream<_E,_Tr> &__cdecl std::operator <<(class std::basic_ostream<_E,_Tr> &,const unsigned char)' : Vorlagenargument fuer 'class std::basic_ostream<_E,_Tr> &' von 'class std::basic_strin
g<char,struct std::char_traits<char>,class std::allocator<char> >' konnte nicht hergeleitet werden
n:\cpp\class_artikel.cpp(38) : error C2784: 'class std::basic_ostream<_E,_Tr> &__cdecl std::operator <<(class std::basic_ostream<_E,_Tr> &,const unsigned char *)' : Vorlagenargument fuer 'class std::basic_ostream<_E,_Tr> &' von 'class std::basic_str
ing<char,struct std::char_traits<char>,class std::allocator<char> >' konnte nicht hergeleitet werden
n:\cpp\class_artikel.cpp(38) : error C2784: 'class std::basic_ostream<_E,_Tr> &__cdecl std::operator <<(class std::basic_ostream<_E,_Tr> &,const signed char)' : Vorlagenargument fuer 'class std::basic_ostream<_E,_Tr> &' von 'class std::basic_string<
char,struct std::char_traits<char>,class std::allocator<char> >' konnte nicht hergeleitet werden
n:\cpp\class_artikel.cpp(38) : error C2784: 'class std::basic_ostream<_E,_Tr> &__cdecl std::operator <<(class std::basic_ostream<_E,_Tr> &,const signed char *)' : Vorlagenargument fuer 'class std::basic_ostream<_E,_Tr> &' von 'class std::basic_strin
g<char,struct std::char_traits<char>,class std::allocator<char> >' konnte nicht hergeleitet werden
n:\cpp\class_artikel.cpp(38) : error C2784: 'class std::basic_ostream<_E,_Tr> &__cdecl std::operator <<(class std::basic_ostream<_E,_Tr> &,_E)' : Vorlagenargument fuer 'class std::basic_ostream<_E,_Tr> &' von 'class std::basic_string<char,struct std
::char_traits<char>,class std::allocator<char> >' konnte nicht hergeleitet werden
n:\cpp\class_artikel.cpp(38) : error C2784: 'class std::basic_ostream<_E,_Tr> &__cdecl std::operator <<(class std::basic_ostream<_E,_Tr> &,const _E *)' : Vorlagenargument fuer 'class std::basic_ostream<_E,_Tr> &' von 'class std::basic_string<char,st
ruct std::char_traits<char>,class std::allocator<char> >' konnte nicht hergeleitet werden
n:\cpp\class_artikel.cpp(38) : error C2676: Binaerer Operator '<<' : 'class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >' definiert diesen Operator oder eine Konvertierung in einen fuer den vordefinierten Operato
r geeigneten Typ nicht
n:\cpp\class_artikel.cpp(38) : error C2065: 'setpresision' : nichtdeklarierter Bezeichner
n:\cpp\class_artikel.cpp(38) : error C2146: Syntaxfehler : Fehlendes ';' vor Bezeichner 'artpreis'
n:\cpp\class_artikel.cpp(38) : error C2563: Listen der formalen Parameter stimmen nicht ueberein
n:\cpp\class_artikel.cpp(38) : error C2568: '<<' : Aufloesung der Funktionsueberladung nicht moeglich
könnte 'class std::basic_ostream<unsigned short,struct std::char_traits<unsigned short> > &__cdecl std::endl(class std::basic_ostream<unsigned short,struct std::char_traits<unsigned short> > &)' sein
d:\microsoft visual studio\vc98\include\ostream(377) : Siehe Deklaration von 'endl'
oder 'class std::basic_ostream<char,struct std::char_traits<char> > &__cdecl std::endl(class std::basic_ostream<char,struct std::char_traits<char> > &)'
d:\microsoft visual studio\vc98\include\ostream(372) : Siehe Deklaration von 'endl'
oder 'class std::basic_ostream<_E,_Tr> &__cdecl std::endl(class std::basic_ostream<_E,_Tr> &)'
d:\microsoft visual studio\vc98\include\ostream(367) : Siehe Deklaration von 'endl'
Fehler beim Ausführen von cl.exe.
class_artikel.obj - 20 Fehler, 0 Warnung(en)
(Unter Linux mit g++ habe ich das gleiche Bild)