string fehler
-
#ifndef KLASSEN_H
#define KLASSEN_Hstruct Datum
{
int jahr;
int monat;
int tag;
// int schaltjahr;bool istGueltig();
// string zusammenbauen();
};struct Schueler
{
string name;float durchschnitt(string name, string FACH);
void anzeigen(string name, string FACH);
};#endif //KLASSEN_H
Wieso bringt er mir
h:\zensuren_dev\klassen.h(20) : error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'name'
h:\zensuren_dev\klassen.h(20) : error C2501: 'Schueler::string': Fehlende Speicherklasse oder Typspezifizierer
h:\zensuren_dev\klassen.h(20) : error C2501: 'Schueler::name': Fehlende Speicherklasse oder Typspezifizierer
h:\zensuren_dev\klassen.h(22) : error C2061: Syntaxfehler: Bezeichner 'string'
h:\zensuren_dev\klassen.h(23) : error C2061: Syntaxfehler: Bezeichner 'string'Das Build-Protokoll wurde unter "file://h:\zensuren_dev\Release\BuildLog.htm" gespeichert.
zensuren - 5 Fehler, 0 Warnung(en)

bitte helfen
mfg Forknisaf
-
ach ja :
in der main.cpp:#include <string>
#include "klassen.h"
----
klassen.h ist die datei wo der fehler auftritt
-
Mach noch oben ein
#include <string>und ersetze "string" durch "std::string"
-
funktioniert

aber jetz habe ich 2 unaufgelöste externe symbole
zensuren.obj : error LNK2019: Nicht aufgelöstes externes Symbol '"public: float __thiscall Schueler::durchschnitt
zensuren.obj : error LNK2019: Nicht aufgelöstes externes Symbol '"public: void __thiscall Schueler::anzeigen
verwiesen in Funktion '_main'??
-
Du solltest diese Funktionen vielleicht noch irgendwo implementieren und nicht nur deklarieren... (bzw. die CPP-Datei dem Projekt hinzufügen)
-
in der main:
#include <iostream>
#include <conio.h>
#include <string>
#include <fstream>
#include <ctime>
#include "klassen.h"in klassen.cpp:
#include <iostream>
#include <conio.h>
#include <string>
#include <fstream>
#include <ctime>
#include "klassen.h"in klassen.h:
#include <string>in klassen.cpp stehen die definitionen der funktionen drin

-
Forknisaf schrieb:
in klassen.cpp stehen die definitionen der funktionen drin
Zeig mal. Ich tippe darauf, dass du Schueler:: vergessen hast.
-
ups

danke ^^
mfg forknisaf
-
noch eine frage :
wie kann ich unix und windows unterscheiden ...
ich weis ja das das irgendwie mit dem
#ifdef unix
geht aber wie genau weis ich auch net mehr
ich möchte einen cls/clear befehl mit system machen ....
mfg forknisaf
-
#ifdef _WIN32 // Windows :-) #else // Kein Windows :-( #endif
-
jaa so in etwa hab ichs ja auch aber was kommt dann zwischen
#ifdef
und
#else
und
#endif
sry bin etwas denkzellengeschwächtmfg Forknisaf
-
aktuell hab ichs so:
#ifdef unix
system("clear");
#else
system("cls");
#endifaber da kommen diese fehler:
zensuren.cpp(58) : error C2501: 'system': Fehlende Speicherklasse oder Typspezifizierer
zensuren.cpp(58) : error C2365: 'system': Erneute Definition; vorherige Definition war 'Funktion'
C:\Programme\Microsoft Visual Studio .NET 2003\Vc7\include\stdlib.h(314): Siehe Deklaration von 'system'
zensuren.cpp(58) : error C2440: 'Initialisierung': 'const char [4]' kann nicht in 'int' konvertiert werden
Diese Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat....
-
Hast Du auch
#include <process.h>in dem Cpp-File?
-
funktioniert net
öhm vllt hab ichs ja an der falschen stelle derzeit stehts nach den
#include's und using namespace std;
-
Ja, das ist definitiv falsch - die system-Befehle müssen dorthin, wo du das clear screen ausführen willst. Du kannst dir aber auch eine Funktion darum bauen:
void clrscr() { #ifdef _WIN32 system("cls"); #else system("clear"); #endif }-> jetzt kannst du dort, wo der Bildschirm gelöscht werden soll, einfach clrscr(); angeben und je nach Betriebssystem wird der richtige Befehl ausgeführt.
-
danke funktioniert
