Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

05.06.2015, 18:29

Linker meldet Fehler

Hallo liebe Community,

und zwar beschäftige ich mich seit ne Zeit mit C++. Ich will ein kleines Spiel programmieren, das nur auf der Konsolenanwendung basiert.
Doch es taucht beim Compilen immer eine Fehlermeldung auf:


Die Klasse Profil.h

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <iostream>
#include <string>

using namespace std;

class Profil{

public:

    Profil();
    Profil(string name, int schwierigkeit, string geschlecht);
    ~Profil();

    void setName(string name);
    void setSchwierigkeit(int schwierigkeit);
    void setGeschlecht(string geschlecht);

    string getName();
    int getSchwierigkeit();
    string getGeschlecht();

    string profilAnlegen();


private:
    string sName;
    int iSchwierigkeit;
    string sGeschlecht;

};



Klasse Profil.cpp

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#include "Profil.h"

using namespace std;

Profil::Profil(string name, int schwierigkeit, string geschlecht){
    name = sName;
    schwierigkeit = iSchwierigkeit;
    geschlecht = sGeschlecht;
}

Profil::~Profil(){}


////SETTER
void Profil::setName(string name){
    sName = name;
}
void Profil::setSchwierigkeit(int schwierigkeit){
    iSchwierigkeit = schwierigkeit;
}
void Profil::setGeschlecht(string geschlecht){
    sGeschlecht = geschlecht;
}

////GETTER
string Profil::getName(){
    return sName;
}
int Profil::getSchwierigkeit(){
    return iSchwierigkeit;
}
string Profil::getGeschlecht(){
    return sGeschlecht;
}


string Profil::profilAnlegen(){

    string sProfil;
    string sGeschlecht;
    int iAuswahl;

    cout << "Willkommen. Um ein neues Spiel zu starten, solltest du zuerst\n ein neues Profil anlegen." << endl;
    cout << "Gebe hier dein Profilnamen ein: ";
    cin >> sProfil;
    setName(sProfil);

    cout << endl;
    cout << "Bist du ein Mann oder eine Frau? " << endl;
    cout << "Geschlecht: ";
    cin >> sGeschlecht;
    setGeschlecht(sGeschlecht);
    cout << endl;
    cout << "Nun wähle bitte die Schwierigkeitsstufe aus: " << endl;
    cout << "(1) Einfach" << endl;
    cout << "(2) Normal" << endl;
    cout << "(3) Schwer" << endl;
    cout << "Auswahl: ";
    cin >> iAuswahl;
    setSchwierigkeit(iAuswahl);

    return sProfil;
}


und schließlich die main.cpp :

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#include <iostream>
#include <string>
#include "Profil.h"

using namespace std;

int Menue(int Auswahl);

int main(){

    Profil datei; // Hierbei entsteht der Fehler!

    int iAuswahl = 0;

    iAuswahl = Menue(iAuswahl);

         
    system("PAUSE");
    return 0;
}

int Menue(int Auswahl){

    int iCounter = 0;

    do{
        cout << "Willkommen bei Game." << endl;
        cout << "Bitte wähle aus folgendem Menü. Schreibe dafür die Zahl des jeweiligen Eintrags." << endl << endl;
        cout << "(1) Neues Spiel." << endl;
        cout << "(2) Spiel fortsetzen." << endl;
        cout << "(3) Optionen." << endl;
        cout << "(4) Extras." << endl;
        cout << "(5) Verlassen." << endl;

        cout << "Auswahl: ";
        cin >> Auswahl;
        cout << endl;

        if (Auswahl == 1){
            cout << "(1) Neues Spiel." << endl;
            iCounter = 1;
        }
        else if (Auswahl == 2){
            cout << "(2) Spiel fortsetzen." << endl;
            iCounter = 1;
        }
        else if (Auswahl == 3){
            cout << "(3) Optionen." << endl;
            iCounter = 1;
        }
        else if (Auswahl == 4){
            cout << "(4) Extras." << endl;
            iCounter = 1;
        }
        else if (Auswahl == 5){
            cout << "(5) Verlassen." << endl;
            iCounter = 1;
        }
        else{
            system("cls");
            cout << "Falsche Eingabe! Eingabe erneut tätigen." << endl << endl;
            iCounter = 2;
        }
    } while (iCounter == 2);

    return Auswahl;
}


Die folgende Fehlermeldung taucht immer dann auf, wenn ich ein Objekt von der Klasse Profil erstellen will.

Fehlermeldung:
Fehler 1 error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""public: __thiscall Profil::Profil(void)" (??0Profil@@QAE@XZ)" in Funktion "_main". C:\Users\blabla\documents\visual studio 2013\Projects\Game\Game\main.obj Game
Fehler 2error LNK1120: 1 nicht aufgelöste Externe C:\Users\blabla\documents\visual studio 2013\Projects\Game\Debug\Game.exe 1 1 Game

Need Help ^^ .

mfg
peacewalker

2

05.06.2015, 18:49

Die Fehler meldung sagt es dir eigentlich schon.

Profil.hpp

C-/C++-Quelltext

1
Profil();


Profil.cpp

C-/C++-Quelltext

1
???
Wer aufhört besser werden zu wollen hört auf gut zu sein!

aktuelles Projekt:Rickety Racquet

3

05.06.2015, 18:55

Du hast vergessen, Profil::Profil() zu definieren.
Übrigens mach alles, was kram von einem bestimmten namensraum in den globalen namesraum importiert (wie using namespace std; es zu tun vermag), weg.

4

05.06.2015, 19:58

Man.. manchmal sieht man den Wald vor lauter Bäumen nicht..

Danke. :D

@Roflo: Kannst du mir eventuell erklären, weshalb es nicht gut ist 'using namespace std;' zu benutzen?
Viele raten mir dazu und andere wieder nicht..

mfg peacewalker.

5

05.06.2015, 20:13

Wenn du den Header mit using namespace std; (bzw. irgendwas anderes mit using) etwas in den globalen namensraum importierst (du musst also nicht mehr bla:: davorschreiben), hast du es unweigerlich auch in allen anderen dateien, welche diesen Header includieren.
In cpp-dateien ist das ja kein problem. Trotzdem sollte man, besonders wenn der Name nicht allzulang ist, wie z.B. std, diesen auch hin schreiben, d.h. std::cout, std::cin, std::apfelkuchen.

6

10.06.2015, 15:36

Okay, dann weiß ich Bescheid.

Danke nochmal.


mfg
peacewalker

Werbeanzeige