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

Tobsi_

Frischling

  • »Tobsi_« ist der Autor dieses Themas

Beiträge: 83

Wohnort: Sachsen Anhalt

Beruf: Schülerin

  • Private Nachricht senden

1

30.10.2012, 16:13

expected unqualified-id before ´.`token

Ich habe mal ein bisschen mit Klassen und Vererbung herumexperimentiert und habe jetzt ein Problem. Aber erstmal der Quellcode (etwas eingekürzt, wenn ihr mehr braucht, sagt es mir bitte):

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
#include <iostream>
using namespace std;

// Basisklasse
class CRaumschiff
{
 protected:
 //Membervariablen
 int m_Farbe;
 int m_Energie;

 public:
    //Memberfunktionen
    CRaumschiff ()
    {
    m_Energie = 5000;
    m_Farbe = 0;
    cout << "Raumschiff wurde erstellt (Konstruktor)" << endl;
    }
    void Starten()  {cout << "Schiff startet (basisklasse)" << endl;}
    void Landen()   {cout << "Schiff landet (Basisklasse) " << endl;}

};

//Abgeleitete Klassen
class CMinenleger : public CRaumschiff
{
...
};

class CAbfangjaeger : public CRaumschiff
{
...
};

int main ()
{
 CAbfangjaeger Jaeger; // Abfangjäger erstellen
 CMinenleger Miner; //Minenleger erstellen
 CRaumschiff Schiff; // "normales" Raumschiff erstellen

 //Aktionen des Schiffs (CRaumschiff)
 CRaumschiff.Starten();
 CRaumschiff.Landen();

return 0;
}
Die Funktionen vom Minenleger und Abfangjäger funktioniern, wenn ich sie über den Punktoperator aufrufe (hab ich jetzt mal weggelassen). Aber wenn ich die Funktionen von der Basisklasse so aufrufe, geht es nicht:
Beim compilieren kriege ich die Fehlermeldung (Zeile45+46): expected unqualified-id before ´.`token.
Ich habe auch schon google gefragt, aber nicht so wirklich was gefunden, außer dass man die Funktionen über :: aufruft. Als ich dass probiert habe kam aber eine andere Fehlermeldung (cannot call memberfunktion void CRaumschiff.Starten () without object). Wahrscheinlich habe ich wieder irgendetwas offensichtliches übersehen. :S Also für Hilfe wäre ich dankbar.


dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

2

30.10.2012, 16:20

Der Fehler liegt hier:

C-/C++-Quelltext

1
2
CRaumschiff.Starten();
CRaumschiff.Landen();

Eine Methode arbeitet mit einem Objekt und nicht mit einer Klasse. Was du willst, ist also nicht CRaumschiff.Methode(), sondern Schiff.Methode()... ;)

Tobsi_

Frischling

  • »Tobsi_« ist der Autor dieses Themas

Beiträge: 83

Wohnort: Sachsen Anhalt

Beruf: Schülerin

  • Private Nachricht senden

3

30.10.2012, 16:25

Oh man, es war also einer dieser offensichtlichen Fehler, an denen ich mich immer totsuche :dash:
Aber jetzt funktioniert es wenigstens...
Riesengroßes Dankeschön, dot!

Werbeanzeige