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

23.06.2012, 18:02

Problem beim Aufrufen von Funktionen von Klassen

Ich beschäftige mich momentan mit KLassen in C++ und habe schon fast das ganze Kapitel im Buch durchgelesen.
Zu Übungszwecken hab ich mir nun eine eigene Klasse geschrieben und zwar zum Ghost.
Der Ghost in eine Einheit in dem RTS Starcraft 2 und hat verschiedene Spezialfähigkeiten.
Bei meinem Programm hat man die Möglichkeit einen Ghost zu erstellen und dann verschiedene Aktionen mit ihm durchzuführen.
Aber seht selbst:
CGhost.hpp

C-/C++-Quelltext

1
2
3
4
5
6
7
// Ghost-Klasseclass CGhost 
{private: 
// Membervariablenint m_Energy; 
int m_Healthpoints;public: 
// Memberfunktionenvoid Snipingattack (int *pm_Energy) ;void EMP (int *pm_Energy); 
CGhost ();CGhost (int Energy, int Healthpoints); 
};

CGhost.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
//Definition der Klasse CGhost
#include <iostream>
#include "CGhost.hpp"
using namespace std;
// Funktionenvoid CGhost::Snipingattack (int *pm_Energy) 
{if ( *pm_Energy >= 50 ) 
{
*pm_Energy -= 50;cout << "Dem Ziel wurde Schaden zugefügt" << endl; 
}else { cout << "Du hast zu wenig Energie" << endl;} 
}void CGhost::EMP (int *pm_Energy) 
{if ( *pm_Energy >= 50 ) 
{
*pm_Energy -= 50;cout << "Dem Ziel wurde Energie abgesaugt" << endl; 
}else { cout << "Du hast zu wenig Energie" << endl;} 
}
CGhost::CGhost ()
{
m_Energy = 150;
m_Healthpoints = 200;cout << "Ghost wurde erstellt" << endl; 
}CGhost::CGhost ( int Energy, int Healthpoints ) 
{
m_Energy = Energy;
m_Healthpoints = Healthpoints;cout << "Ghost wurde erstellt" << endl; 
}
GhostActions.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
// Aktionen des Ghosts
#include <iostream>
#include "CGhost.hpp"
using namespace std;int main () 
{
// Variablenint Auswahl = 0; 
int Energy = 0;int Healthpoints = 0; 
// Ghost erstellencout << "Treffen sie eine Wahl" << endl; 
cout << "[1] Standardghost erstellen" << endl;cout << "[2] Speziellen Ghost erstellen" << endl;cout << "Deine Wahl: "; 
cin >> Auswahl;switch (Auswahl) 
{case (1): 
{
CGhost Ghost1;} break;case (2): 
{cout << "Energie des zu erstellenden Ghosts: "; 
cin >> Energy;cout << "Lebenspunkte des zu erstellenden Ghosts: "; 
cin >> Healthpoints;
CGhost Ghost1 (Energy, Healthpoints);
}
 default: 
{cout << "Wer lesen kann ist klar im Vorteil :p" << endl;return 0; 
}
}
 
// Aktionen des Ghostswhile ( Auswahl != 3) 
{cout << "Waehlen sie eine Aktion aus!" << endl; 
cout << "[1] Scharfschütze einsetzen" << endl;cout << "[2] EMP einsetzen" << endl; 
cout << "[3] Beenden" << endl;cout << "Deine Wahl: "; 
cin >> Auswahl;switch (Auswahl) 
{case (1): 
{
Ghost1.Snipingattack (&Energy);} break;case (2): 
{
Ghost1.EMP (&Energy);} break; 
case (3):{}break;default: 
{cout << "Dein geistiges Alter liegt zwischen 0 und 5 Jahren" << endl; 
} 
}
}return 0; 
}

Der Compiler spuckt nun folgende Fehlermeldung aus

Quellcode

1
2
3
4
5
6
7
8
9
1>------ Erstellen gestartet: Projekt: Ghost, Konfiguration: Debug Win32 ------
1> GhostActions.cpp
1>c:\users\krenzler\documents\visual studio 2010\projects\ghost\ghostactions.cpp(56): error C2065: 'Ghost1': nichtdeklarierter Bezeichner
1>c:\users\krenzler\documents\visual studio 2010\projects\ghost\ghostactions.cpp(56): error C2228: Links von ".Snipingattack" muss sich eine Klasse/Struktur/Union befinden.
1> Typ ist ''unknown-type''
1>c:\users\krenzler\documents\visual studio 2010\projects\ghost\ghostactions.cpp(61): error C2065: 'Ghost1': nichtdeklarierter Bezeichner
1>c:\users\krenzler\documents\visual studio 2010\projects\ghost\ghostactions.cpp(61): error C2228: Links von ".EMP" muss sich eine Klasse/Struktur/Union befinden.
1> Typ ist ''unknown-type''
========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========

Hier mal die beiden Zeilen, auf die sich die Fehlermeldungen beziehen

C-/C++-Quelltext

1
2
 56: Ghost1.Snipingattack (&Energy);
      61: Ghost1.EMP (&Energy);

Wo liegt der Fehler?

mfg Challenger

2

24.06.2012, 17:32

Und wie kann ich verhindern, dass der Speicher wieder freigegeben wird ohne den case-Block wegzulassen? :?:

3

24.06.2012, 20:07

Danke. :)
Hätte ich aber auch selbst darauf kommen können ( steht ja auch im Buch ) :D

Werbeanzeige