problem beim einbinden von klassenbibliothek



  • hallo,
    ich würde euch gern was fragen, denn ich hab ein problem.
    ich muss grade von der uni her einen raytracer schreiben, und dazu wurde uns eine kleine klassenbiblithek für farben, matrizen etc vorgegeben.

    jetzt versuch ich materialien mit den farben zu initialisieren

    material::material(std::string name, color ka,  color kd,  color ks,double m):
        name_(name),
        ka_(ka),
        kd_(kd),
        ks_(ks),
        m_(m){  }
    

    jetzt tauchem merkwürdiger weise in der zeile von m_ mehrere fehlermeldungen auf
    nämlich findet er die referenz zum standartkonstuktor von color 3 mal nicht und dann 2 mal für den destruktor

    die bibliothek hab ich bloß über zB #include"color.hpp" eingebunden, und die scheint er ja auch prinnzipiell zu finden, in der initialisierungsliste hat er ja keine fehlermeldung

    kann mir bitte jemand sagen was ich falsch mache? 🙂


  • Mod

    sebii schrieb:

    kann mir bitte jemand sagen was ich falsch mache? 🙂

    Du hast die als wichtig markierten Threads in diesem Forum nicht gelesen (auch noch einmal in meiner Signatur zu finden). Der gezeigte Code reicht bei weitem nicht aus, um deine Frage zu beantworten. Bitte zeig aber nun auch nicht gleich alles, sondern nimm dir einen Moment Zeit, ein passendes Beispiel zu erstellen.



  • so ich hab mir das mal angeschaut, ich hab auch schon in bücher reingeschaut etc
    also ich versuchs nochmal zu schildern

    die klassenbibliothek besteht einfach aus aus verschiedenen klassen und deren implementierung
    leider sind diese total unkommentiert 😞

    also ich include die color.hpp der klassenbibliothek

    und habe eine klasse material die verschiedene farben/werten für diffuse reflexion, spiegelung sowie namen etc enthält

    jetzt versuche ich einfach den standartkonstruktor von material zu machen

    material::material():
        name_(),//string
        ka_(),  //color
        kd_(),  //color
        ks_(),  //color
        m_()   //double
        {} //eigentlicher konstruktor
    

    so jetzt geht der durch die initalisierungsliste ohne felhermeldung, und in geschweiften klammern kommen die beschriebenen fehlermeldungen

    mehr kann man tatsächlich nicht dazu sagen, ausser vlt das ich codeblocks ohne geänderte einstellungen verwende
    dieses problem tritt bei allen konstruktoren an der selben stelle in der selben form auf



  • okey das problem scheint tatsächlich in der auffindung der konstruktoren zu liegen er meldet keine fehler beim #include an, jedoch kann ich die klasse nicht verwenden...



  • name_(),//string 
        ka_(),  //color 
        kd_(),  //color 
        ks_(),  //color 
        m_()   //double
    

    Das sind alles default-Ctors. Die kann man einfach weglassen.



  • Linkerfehler oder Compilerfehler? Wenn es ein Linkerfehler ist, gibts wohl eine Lib, gegen die du linken musst. Wenns eine Compilerfehler ist und die richtige Datei eingebunden hast, machst du wahrscheinlich was falsch. Wär aber nicht schlecht, wenn du zumindest die genaue Fehlermeldung gepostet hättest, ist echt nervig, wenn man raten muss, was du jetzt meinen könntest.



  • dieses problem tritt bei allen konstruktoren an der selben stelle in der selben form auf

    Rechtsklick auf den Error unten -> kopieren.
    Das hilft uns allen 😉

    Wenn er schreibt, es wird die Referenz nicht gefunden Tippe ich mal auf Linkerfehler àlà undefined reference to ...


Anmelden zum Antworten