Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » multiple definition of 'Funktion()'

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
20.06.2005, 11:07 Uhr
~pfidu
Gast


Hallo...

Ich habe drei Dateien main.cpp, Header.cpp, Header.hpp

main.cpp:

C++:
     #include Header.cpp

     int main(){...}


in der Header.cpp:

C++:
     #include Header.hpp


dann definitionen aus den Methoden der Klasse in der Header.hpp

z.B.

C++:
     int Klasse::get(){...}


usw.

in der Header.hpp:

C++:
    #ifndef HEADER_hpp
    #define HEADER_hpp

    #include <iostream>
    #include <cstdlib>
    #include <windows.h>

     class Klasse {...};

     ostream& operator<< (ostream& op, Klasse& x){
         opx.get<<"\n";
         return op;
         }  


Nach dem Compilieren gibt es folgende Fehlermeldungen:

Code:
multiple definition of 'Klasse::get()'
first defined here
...
...
ld returned 1 exit status



was mache ich falsch???

Danke schon im Voraus!

mod edit: benutze die Board Tags selber!

Dieser Post wurde am 20.06.2005 um 13:03 Uhr von Pablo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
20.06.2005, 11:15 Uhr
Th



In Main.cpp nur Header (.hpp), keine Definitionen (.cpp) inkludieren, also


C++:
#include "Header.hpp"

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
20.06.2005, 11:19 Uhr
~pfidu
Gast


Danke für die Sehr schnelle Antwort!

und wo includiere ich die Header.cpp? muss doch irgnedwo aufgerufen werden.

Habe es ausprobiert...kommt immer noch der Fehler aber nur noch mit den ostream& ...aus der Header.hpp.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
20.06.2005, 11:42 Uhr
Th



Welchen Compiler bzw IDE benutzt du? Die cpp-Dateien müssen in ein Projekt eingebunden sein und werden einzeln compiliert und dann vom Linker zusammengefügt.

In den Header-Dateien immer "std::ostream" schreiben. Ich hoffe, du kennst schon Namensbereiche (namespaces) ansonsten einfach mal hier im Forum danach suchen...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
20.06.2005, 11:47 Uhr
~pfidu
Gast


Ich habe Dev-C++
Habe da auch ein Projekt angelegt...aber da gibt es dann keine weiter datei, wo die anderen 3 eingebunden werden...wie muss ich das machen?


In der Headerdatei habe ich using namespace std; geschrieben... hat doch den selben effect.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
20.06.2005, 12:09 Uhr
Th



Du mußt dem Projekt dann mit "zu Projekt hinzufügen" deine weiteren .cpp-Dateien angeben (entweder über Hauptmenü oder über Kontextmenü).

NIEMALS "using namespace ..." in Header-Dateien schreiben!!!
Dadurch wird das gesamte Namespace-Konzept über den Haufen geworfen (evtl. kommt es dann zu Namenskonflikten, falls du eine Klasse so benennst, wie sie schon im anderen namespace existiert!!)

Wenn du sicher bist, dass du keine gleichen Namen verwendest, kannst du explizit z.B.

C++:
using std::ostream;
using std::string;


etc. schreiben.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
20.06.2005, 12:19 Uhr
~pfidu
Gast


OK...danke...mach ich nie wieder...aber das Problem ist noch nicht gelöst...

jetzt ist immer noch der Fehler:

in der header.hpp steht:


C++:
typedef short _stdcall (*inpfuncPtr)(short portAddr );
typedef void _stdcall (*oupfuncPtr)(short portAddr,short valOut);
    
   inpfuncPtr inp32;
   oupfuncPtr out32;  





und der fehler wie immer... multiple definition of 'inp32' etc.

was kann ich da machen?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
20.06.2005, 12:30 Uhr
virtual
Sexiest Bit alive
(Operator)


Du musst dei Variable im Header deklarieren, in einer C Datei deiner Wahl hingegen definieren. Da ich keine Lust habe mich zu wiederholen: www.fun-soft.de/showtopic.php?threadid=11754
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
21.06.2005, 11:48 Uhr
~pfidu
Gast


Danke!!!

Habs so gemacht:

in hpp:

C++:
typedef short _stdcall (*inpfuncPtr)(short portAddr );
   typedef void _stdcall (*oupfuncPtr)(short portAddr,short valOut);
  
   extern inpfuncPtr inp32;
   extern oupfuncPtr out32;  



in cpp:
inpfuncPtr inp32;
oupfuncPtr out32;

in Dev-C++ keine Probleme aber Visual C++ kommt net damit zurecht.!????
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
21.06.2005, 12:07 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


sollte er eigentlich, evtl checkt der 6.0er das nicht, der hat sowieso einige macken
--
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: