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

10.06.2015, 20:29

[C++]Unidentifizierbarer Linkerfehler

Halli hallo,

ich hab ein kleines problem. Ich schreibe zurzeit ein Programm für ein Uniprojekt im Qt-Creator.

Hab folgende Funktion die wie man ja sieht nen INT übergeben bekommt, was auch alles funktioniert.
Aber wenn ich jetzt statt der if...if else Abfragen switch case nehme, bekomme ich nen Linkerfehler


EDIT: Den Fehler sollte ich vielleicht auch posten :D

Fehler: symbol(s) not found for architecture x86_64
Fehler: linker command failed with exit code 1 (use -v to see invocation)

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
CParts::CParts(int ID)
{

    switch(ID)
    {
    case 0: cpu();
        break;
    case 1: mainboards();
        break;
    case 2: ram();
        break;
    case 3: cpuCooler();
        break;
    case 4: gpu();
        break;
    case 5: hdd();
        break;
    case 6: cases();
        break;
    case 7: psu();
        break;
    case 8: discdrive();
        break;
    }
    //if(ID == 0) cpu();
    //else if(ID == 1) mainboards();

    title.append(QString("%1").arg(ID));
    p_Parts = new QTableView;
    p_BackButtons = new QPushButton;
    p_BackButtons->setText("<<<");

    layout = new QGridLayout;

    layout->addWidget(new QSplitter,0,1,0,1);
    layout->addWidget(p_BackButtons,0,0,1,1);
    layout->addWidget(p_Parts,1,0,1,2);
}


Und hier noch die dazugehörige Headerdatei

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
class CParts:public QWidget
{
    Q_OBJECT

public:

    CParts(int ID);
    ~CParts();
    QGridLayout* get_Layout();
    QPushButton* get_Button();
    QString get_Title();


private:

    QGridLayout* layout;
    QTableView* p_Parts;
    QPushButton* p_BackButtons;
    QString title;

    void cpu();
    void mainboards();
    void ram();
    void cpuCooler();
    void gpu();
    void hdd();
    void cases();
    void psu();
    void discdrive();
};



Danke für die Hilfe :D

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Qube« (10.06.2015, 20:35)


cojo2015

Alter Hase

Beiträge: 516

Wohnort: bei mir zu Hause

Beruf: Schüler

  • Private Nachricht senden

2

10.06.2015, 20:38

Versuche doch mal bei switch-case ein "default: ..." einzubauen.

3

10.06.2015, 20:48

Ist leider nicht der Fehler hab ich auch schon probiert :D

4

10.06.2015, 20:48

steht bei dem fehler noch was anderes? zb welche symbole nicht zu finden sind?

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Roflo« (10.06.2015, 20:53)


5

10.06.2015, 20:51

nope das wars...find ich auch ein wenig mau.
Das komische daran ist wenn ich ID durch ne feste Zahl ersetze geht es.

cojo2015

Alter Hase

Beiträge: 516

Wohnort: bei mir zu Hause

Beruf: Schüler

  • Private Nachricht senden

6

10.06.2015, 20:53

Hast du ID initialisiert? Und wenn ja, wie?

7

10.06.2015, 20:54

Fehler gefunden !!!

die Funktion psu() ist nicht deklariert -.-

cojo2015

Alter Hase

Beiträge: 516

Wohnort: bei mir zu Hause

Beruf: Schüler

  • Private Nachricht senden

8

10.06.2015, 20:56

So etwas passiert mir leider auch immer...

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

9

10.06.2015, 20:56

Das Problem ist nicht das switch, sondern die darin gerufenen Methoden. Irgendeine ist nicht definiert, sondern nur deklariert. Komisch trotzdem, dass da nirgends steht, welche es ist.

Edit: Ninjas :ninja:
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

10

10.06.2015, 20:57

ID wird ja an den Konstruktor übergeben, also ist sie immer initialisiert ;)
Vlt mal const int ID versuchen, oder { und } zwischen den case versuchen. Scheint wohl ein interner Fehler zu sein.

Werbeanzeige