000
24.10.2019, 13:35 Uhr
Paul Dinkelberg
|
Guten Tag,
ich habe im Rahmen eines Uni-Kurses angefangen c++ zu lernen dazu sollen wir die Entwicklerumgebug Qt Creator verwenden. Beim bearbeiten der ersten Hausaufgabe, hat auch zunächst alles wunderbar funktioniert, bis aufeinmal ohne das ich groß was geändert habe, Fehlermeldungen ("undefined references" zu meinen Funktionen einer anderen Klasse) kommen, obwohl diese einen moment früher noch normal ausführbar waren.
.pro Datei:
Code: |
TEMPLATE = app CONFIG += console c++11 CONFIG -= app_bundle CONFIG -= qt
SOURCES += \ main.cpp \ studenthelper.cpp
HEADERS += \ studenthelper.h
|
.h Datei:
C++: |
#ifndef STUDENTHELPER_H #define STUDENTHELPER_H
/* Enum */
enum Studiengangstyp{ Bachelor, Master };
/* Struct */
struct Student { wchar_t name[64]; long matrikelnummer; double durchschnittsnote; Studiengangstyp studiengangstyp; };
/* Namespace */
namespace studis{ struct Student* createStudent( wchar_t name[64], long matrikelnummer, double durchschnittsnote, Studiengangstyp studiengang); void printStudent(Student& student); struct Student& getBetterStudent(Student& student1, Student& student2); void getTotalAverageGrade(Student *students, int size); void safeDeleteStudent(Student* &student); }
#endif // STUDENTHELPER_H
|
.cpp Klasse mit den Funktionen
C++: |
#include "studenthelper.h" #include <iostream> #include <stdlib.h> #include <stdio.h> using namespace std;
/* createStudent */
struct Student* createStudent(wchar_t name[64], long matrikelnummer, double durchschnittsnote, Studiengangstyp studiengang){ Student *student1 = new Student; for (int i = 0; i<63; i++){ student1->name[i]=name[i]; } student1->matrikelnummer=matrikelnummer; student1->durchschnittsnote=durchschnittsnote; student1->studiengangstyp=studiengang; return student1; };
/* printStudent */
void printStudent(Student& student){ wstring arraystring(student.name); string str(arraystring.begin(), arraystring.end());
cout << str << endl; cout << "Durchschnittsnote: " << student.durchschnittsnote << endl; cout << "Matrikelnummer: " << student.matrikelnummer << endl; cout << "Studiengangstyp: " << student.studiengangstyp<< " // Master = 1, Bachelor = 0" << endl; }
/* getBetterStudent */
struct Student& getBetterStudent(Student& student1, Student& student2){ return (student1.durchschnittsnote <= student2.durchschnittsnote)?student1:student2; }
/* getTotalAverage */
void getTotalAverageGrade(Student *students, int size){ double temp = 0; for ( int i = 0; i < size; i++){ temp += students[i].durchschnittsnote; } cout << temp / size << endl; }
/* safeDeleteStudent */
void safeDeleteStudent(Student* &student){ if (student != NULL){ delete student; cout << "Speicher freigegeben!"<< endl; }else{ cout <<"Speicher bereits frei!"<<endl; } }
|
main.cpp
C++: |
#include <iostream> #include "studenthelper.h" #include <stdlib.h> #include <stdio.h> using namespace std; using namespace studis;
int main() {
wchar_t Max[64]; for (int i =0;i<63;i++){ Max[i]= NULL; } Max[0]=L'M'; Max[1]=L'a'; Max[2]=L'x'; Max[3]=L' '; Max[4]=L'M'; Max[5]=L'u'; Max[6]=L's'; Max[7]=L't'; Max[8]=L'e'; Max[9]=L'r';
wchar_t Frauke[64]; for (int j =0;j<63;j++){ Frauke[j]= NULL; } Frauke[0]=L'F'; Frauke[1]=L'r'; Frauke[2]=L'a'; Frauke[3]=L'u'; Frauke[4]=L'k'; Frauke[5]=L'e'; Frauke[6]=L' '; Frauke[7]=L'W'; Frauke[8]=L'e'; Frauke[9]=L'i'; Frauke[7]=L'b'; Frauke[8]=L'l'; Frauke[9]=L'i'; Frauke[7]=L'c'; Frauke[8]=L'h';
/* createStudent */
Student *Max1 = createStudent(Max, 100123, 2.1, Master); Student *Frauke1 = createStudent(Frauke, 100456, 1.4, Bachelor); Student &MaxRef = *Max1; Student &FraukeRef = *Frauke1;
/* printStudent */
printStudent(MaxRef); printStudent(FraukeRef);
/* getBetterStudent */
Student &betterStudent = getBetterStudent(MaxRef, FraukeRef); printStudent(betterStudent);
Student studArray[2]; studArray[0] = *Max1; studArray[1] = *Frauke1;
Student *ptrstud = studArray;
getTotalAverageGrade(ptrstud,2);
Student *zeigerAufReferenz = &MaxRef; safeDeleteStudent(zeigerAufReferenz);
}
|
Fehlermeldungen: undefined reference to: C:\Users\Paul\Documents\Qt\Aufgabe2\main.cpp:50: Fehler: undefined reference to `studis::createStudent(wchar_t*, long, double, Studiengangstyp)' C:\Users\Paul\Documents\Qt\Aufgabe2\main.cpp:51: Fehler: undefined reference to `studis::createStudent(wchar_t*, long, double, Studiengangstyp)' C:\Users\Paul\Documents\Qt\Aufgabe2\main.cpp:57: Fehler: undefined reference to `studis::printStudent(Student&)' ... collect2.exe:-1: Fehler: error: ld returned 1 exit status
Ich bin echt am verzweifeln und frage mich ob es was mit Qt zutun hat oder ob ich etwas übersehe, aber als Anfänger bin ich leider mit meinem Latein am ende und finde auch nichts passendes bei google :/
Würde mich freuen wenn sich das mal jemand anschauen könnte, der davon ein wenig mehr Ahnung hat
Mfg
Paul
-edit: Code-Tags repariert Dieser Post wurde am 24.10.2019 um 22:51 Uhr von ao editiert. |