Fragen zu Dev-C++ bzgl. Header-Dateien



  • Hi,

    ich bringe mir seit einigen Tagen C++ bei.
    Ich bin nun auf ein Problem gestoßen, wo ich nicht mehr alleine weiter komme.

    Ich lerne aus dem Buch "Einsteigerseminar C++" und beim Kompilieren von Programmen
    mit eigenen Header-Dateien tritt ein Fehler auf. Ich benutze Dev-C++ als Editor und Kompiler.

    Also das Beispiel aus dem Buch sieht so aus:
    (ist beinahe 1:1, habe nur void main(void) in int main(void) geändert)

    --funkt.cpp--

    #include "funkt.h"
    
    int Quadrat(int Argument)
    {
      int Dummy;
      Dummy = Argument * Argument;
      return Dummy;
    }
    

    --funkt.h--

    int Quadrat(int Argument);
    

    --main.cpp--

    #include <iostream.h>
    #include "funkt.h"
    
    int main(void)
    {
      int iEingabe, iErgebnis;
      cout << "Zahl eingeben: ";
      cin >> iEingabe;
      iErgebnis = Quadrat(iEingabe);
      cout << iErgebnis;
    
      return 1;
    }
    

    Wenn ich nun auf Kompilieren gehe kommt folgende Fehlermeldung:

    [Linker error] undefined reference to `Quadrat(int)'

    Würde mich über eine Lösung des Problems freuen.

    Bye Alex



  • int Quadrat(int argument);
    
    --------------------------------
    
    #include "funkt.h" 
    
    int Quadrat(int argument) 
    { 
       return argument * argument; 
    }
    
    --------------------------------
    
    #include <iostream> 
    #include <conio.h>
    #include "funkt.h" 
    using namespace std;
    
    int main() 
    { 
      int eingabe; 
      cout << "Zahl eingeben: "; 
      cin >> eingabe; 
      cout << "Quadratzahl: " << Quadrat( eingabe ); 
    
      getch();   
      return 0; 
    }
    

    Wirf vor allem diese überflüssigen Variablen raus, schreibe Variablen am Anfang alle klein und verwende <iostream> anstelle <iostream.h> Das Buch ist offensichtlich veraltet und damit für einen Anfänger Schrott! Die ungarische Notation ist ebenfalls hier nicht sinnvoll. 😉

    zu Dev-C++: schau in dein Projekt, ob auch alle Dateien wirklich dort vorhanden sind: funkt.h, funkt.cpp und main.cpp
    ansonsten zum Projekt zufügen.



  • danke für die hilfe.

    hatte bei dev-c++ kein projekt erstellt.
    hatte die dateien nur im gleichen verzeichnis und alle so geöffnet.

    hat jetzt geklappt...

    bye alex



  • Hab das gleiche Problem wie du. benutze auch dev4.
    Was ich an der Lösung komisch finde wenn ich "funkt.h" aus dem Projekt entferne funktioniert es noch. Entferne ich funkt.cpp aus dem projekt bekommt man wieder den gleichen Fehler.

    Vielleicht hab ich auch ne ganz falsche Vorstellung von den header datein. Aber ich dachte man müsste die nur am anfang der main.cpp inkludieren. -> also wie die vorgegebenen.
    Und das man nicht eine andere *cpp datei inkludieren soll, sondern das über *h dateien erledigen soll.



  • Dort, wo #include <MyHeader.h> oder #include "MyHeader.h" steht, stellt man sich einfach den kompletten Sourcecode der Header-Datei vor. Es geht hier um Trennung der Module zur besseren Wiederverwendung. In der header-Datei steht sozusagen das Inhaltsverzeichnis und in der cpp-Datei die Implementierung.

    Wenn Du mir Deine Klasse MyClass schicken willst, packst Du mir MyClass.h und MyClass.cpp (bzw. MyClass.lib, wenn Du den Sourcecode für Dich behalten willst) in eine zip-Datei. Ich binde dann MyClass.h per #include ein und kompiliere die cpp-Datei bzw. linke die MyClass.lib zu meinem Projekt.


Anmelden zum Antworten