Probleme mit OOP/Headerdatei



  • Ich habe heute meine ersten, zarten Schritte mit OOP unternommen, jedenfalls wollte ich das. C++ war aber anscheinend dagegen 😃

    Und zwar wollte ich eine Zufallszahl berechnen lassen im Bereich [von..bis] das Ganze verpackt in eine Header-Datei.
    Benutzt habe ich Dev-C++ unter M$-Windows 2000.

    Es folgt der Code:

    Random.h

    class Random //gibt Zufallszahlen im Bereich [von..bis] zurück
    {
        int von;
        int bis;
        public:
            Random(void); //Konstruktor
            void SetzeParameter(int Randvon, int Randbis);
            int HoleZahl(void);
            ~Random(void); //Destruktor  
    };
    

    Random.cpp

    #include "Random.h"
    #include <stdlib.h>
    
    Random::Random(void)
    {
        von = 0;
        bis = 100;
    }
    
    void Random::SetzeParameter(int Randvon, int Randbis)
    {
        if (Randvon > Randbis)
        {
            int Temp;
            Temp = Randvon;
            Randvon = Randbis;
            Randbis = Temp;
        }    
        von = Randvon;
        bis = Randbis;
    }
    
    int Random::HoleZahl(void)
    {
        int Temp = rand() % (bis - von) + von;
        return Temp;
    }    
    
    Random::~Random(void)
    {
        von = 0;
        bis = 0;
    }
    

    rand2.cpp

    #include <iostream.h>
    #include <time.h>
    #include <stdlib.h>
    #include <stdio.h>
    #include "Random.h"
    
    int main()
    {
        Random Zufall;
        srand(time(NULL));
        int i;
        int j;
    
        for (i = 0; i < 2; i++)
        {
            for (j = 0; j < 5; j++)
            {
                Zufall.SetzeParameter(i, j);
                cout << Zufall.HoleZahl();
            }    
        }    
        getchar();
        return 0;
    }
    

    Wenn ich versuche, die rand2.cpp zu kompilieren bekomme ich folgende Fehler:

    [Linker error] undefined reference to Random::Random()' [Linker error] undefined reference toRandom::SetzeParameter(int, int)'
    [Linker error] undefined reference to Random::HoleZahl()' [Linker error] undefined reference toRandom::~Random()'
    [Linker error] undefined reference to `Random::~Random()'

    Kann mir da vielleicht der ein oder andere weiterhelfen? 🙂



  • Hallo,

    ich schätz mal du hast Random.cpp nicht mitkompiliert. Im Falle von Dev-C++ könnt ich mir vorstellen,
    dass du die Datei nicht dem Projekt hinzugefügt hast, sondern einfach nur normal editiert hast.

    Ist jetzt aber nur geraten.

    grüße



  • UNeverNo schrieb:

    Wenn ich versuche, die rand2.cpp zu kompilieren bekomme ich folgende Fehler:

    [Linker error] undefined reference to Random::Random()' [Linker error] undefined reference toRandom::SetzeParameter(int, int)'
    [Linker error] undefined reference to Random::HoleZahl()' [Linker error] undefined reference toRandom::~Random()'
    [Linker error] undefined reference to `Random::~Random()'

    Kann mir da vielleicht der ein oder andere weiterhelfen? 🙂

    Sicher nicht. Wie du den Fehlermeldungen entnehmen kannst, handelt es sich hier um Linkerfehler. Solche entstehen beim Linken und nicht beim Kompilieren.

    der verdacht hat schon recht: du hast offensichtlich vergessen das Ergebnis der Kompilation von rand2.cpp mitzulinken.



  • Gut geraten 👍

    Allerdings bekomme ich jetzt sowohl beim Dev-C++, als auch VC++ 6.0 eine Unknown Software Exception 😕

    Da bräuchte ich nochmal Hilfe 😉



  • Wahrscheinlich weil sich Division durch 0 (auch Modulo) nicht sonderlich gut macht.



  • Omg, ja, danke 😃

    Btw bei Deiner HP scheint MySQL sich grad ne Pause zu gönnen 😉



  • UNeverNo schrieb:

    Btw bei Deiner HP scheint MySQL sich grad ne Pause zu gönnen 😉

    Das passiert schon mal, da die Rechner unseres Fachschaftsrats nicht ganz so zuverlässig sind, wie die eines großen ISPs.


Anmelden zum Antworten