Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » "Datei-Klasse" in C++ will sich nicht Compilen lassen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
10.10.2004, 00:38 Uhr
~Kevin
Gast


Hallo,
Ich will ein Programm schreiben das Daten aus eienr Datei einließt um sie weiterzubearbeiten... Alle Funktionen dafür habe ich in eine Klasse geschrieben und diese in eine eigene *.cpp-Datei gesteckt. Jetzt will ich aber über die main.cpp auf die Klasse zugreifen können. Ich hab schon raus das man die Klasse in eiern Header Definieren muss die man dann in die main.cpp Includet. Naja aber so ganz geht es doch nicht


C++:
//main.cpp
#ifndef IOSTREAM
#define IOSTREAM
#include <iostream>
#endif
#include "read.h"

using namespace std;

int main(int argc, char *argv[])
{
   LoadFile test;
   test.OpenFile("test.txt");
   test.ReturnToken();
   test.CloseFile();
   return 0;
}



C++:
//read.cpp
#ifndef FSTREAM
#define FSTREAM
#include <fstream>
#endif
#include "read.h"

using namespace std;

void LoadFile::OpenFile(char* file)
{
   in.open(file);
}

char LoadFile::ReturnToken()
{
   char token;
   in.get(token);
   return token;
}

void LoadFile::CloseFile()
{
   in.close();
}



C++:
//read.h
#ifndef LoadFile
#define LoadFile
class LoadFile
{
public:
   void OpenFile(char* file);
   char ReturnToken();
   void CloseFile();
protected:
   std::ifstream in;
};
#endif


Meldung beim Compilen:

Code:
tester@Linux:~/source$ g++ -o prog main.cpp read.cpp
In file included from main.cpp:5:
read.h:10: syntax error before `;'
read.h:11: anonymous class type not used to declare any objects
main.cpp: In function `int main(int, char **)':
main.cpp:11: `test' undeclared (first use this function)
main.cpp:11: (Each undeclared identifier is reported only once
main.cpp:11: for each function it appears in.)
In file included from read.cpp:5:
read.h:11: anonymous class type not used to declare any objects
read.cpp:9: parse error before `('
read.cpp:14: parse error before `('
read.cpp:17: syntax error before `.'
read.cpp:21: parse error before `('
tester@Linux:~/source$

Dieser Post wurde am 10.10.2004 um 17:08 Uhr von Pablo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
10.10.2004, 10:26 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


du machst #define LoadFile und danach nochmals class LoadFile, da meckert er natürlich...

mach es so:


C++:
#ifndef LOADFILE_H_INCLUDED
#define LOADFILE_H_INCLUDED

class LoadFile
{
//...
};

#endif



und sowas:


C++:
#ifndef FSTREAM
#define FSTREAM
#include <fstream>
#endif



kannste dir normal sparen, einfach #include <fstream> sollte langen. Normalerweise sollten die Systemheader einen integrierten Check haben, damit sie nur einmal eingebunden werden.
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
10.10.2004, 12:15 Uhr
~Kevin
Gast


Ok danke...
jetzt kommt aber wenn ich die main.cpp compile die Meldung "read.h:10: syntax error before `;'" Aber bei der read.cpp kommt das nicht :/
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
10.10.2004, 14:45 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


schreib mal den korrigierten header hier rein, haste wahrscheinlich nen tippfehler oder verdrehte header in den cpp's
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
10.10.2004, 15:00 Uhr
~Kevin
Gast



C++:
//main.cpp
#include <iostream>
#include "read.h"

using namespace std;

int main(int argc, char *argv[])
{
   LoadFile test;
   test.OpenFile("test.txt");
   test.ReturnToken();
   test.CloseFile();
   return 0;
}



C++:
//read.cpp
#include <fstream>
#include "read.h"

using namespace std;

void LoadFile::OpenFile(char* file)
{
   in.open(file);
}

char LoadFile::ReturnToken()
{
   char token;
   in.get(token);
   return token;
}

void LoadFile::CloseFile()
{
   in.close();
}



C++:
//read.h
#ifndef LOADFILE_H_INCLUDED
#define LOADFILE_H_INCLUDED
class LoadFile
{
public:
   void OpenFile(char* file);
   char ReturnToken();
   void CloseFile();
protected:
   std::ifstream in;
};
#endif
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
10.10.2004, 16:06 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


wenn du using namespace std; benutzt, brauchste kein std::ifstream mehr zu schreiben, sondern nur noch ifstream. Sollte zwar kein Fehler erzeugen, aber probier das mal wenn du das std:: weglässt
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
10.10.2004, 17:04 Uhr
~Kevin
Gast


Bringt leider nichts
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
10.10.2004, 18:10 Uhr
Oliver
S2-Pixelgeneral


Na weil du in main.cpp nicht den fstream heade includiert hast:


C++:
//main.cpp
#include <iostream>
#include <fstream> // das hier fehlt
#include "read.h"

using namespace std;

int main(int argc, char *argv[])
{
   LoadFile test;
   test.OpenFile("test.txt");
   test.ReturnToken();
   test.CloseFile();
   return 0;
}


--
Demokratie ist die Diktatur der Mehrheit.

www.siedler25.org/ ( Siedler2 - Remake )

Dieser Post wurde am 10.10.2004 um 18:11 Uhr von Oliver editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
10.10.2004, 18:24 Uhr
~Kevin
Gast


Jetzt geht das Linken nicht :/

Code:
main.o: In function `LoadFile::~LoadFile(void)':
main.o(.gnu.linkonce.t._._8LoadFile+0x15): undefined reference to `ifstream::~ifstream(void)'
main.o: In function `LoadFile::LoadFile(void)':
main.o(.LoadFile::gnu.linkonce.t.(void)+0x11): undefined reference to `ifstream::ifstream(int)'
main.o(.LoadFile::gnu.linkonce.t.(void)+0x37): undefined reference to `ifstream::~ifstream(void)'
read.o: In function `LoadFile::OpenFile(char *)':
read.o(.text+0x17): undefined reference to `ifstream::open(char const *, int, int)'
read.o: In function `LoadFile::ReturnToken(void)':
read.o(.text+0x3d): undefined reference to `istream::get(char &)'
read.o: In function `LoadFile::CloseFile(void)':
read.o(.text+0x63): undefined reference to `fstreambase::close(void)'
collect2: ld returned 1 exit status
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
10.10.2004, 22:29 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


machs am besten so:
inkludiere alle für die im header benötigten header im header

Also:


C++:

#ifndef LOADFILE_H_INCLUDED
#define LOADFILE_H_INCLUDED

#include <fstream>

class LoadFile
{
public:
   void OpenFile(char* file);
   char ReturnToken();
   void CloseFile();
protected:
   std::ifstream in;
};

#endif



--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: