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. Also für Hilfe wäre ich dankbar.