Hallo ,
ich habe zwei Klassen erstellt mit diversen Membervariablen. In einer der Klassen ist eine Funktion, die sowohl aus der eigenen als auch aus der anderen Klasse Werte braucht. Beim Kompilieren erhalte ich den Fehler, dass die Bezeichner aus der anderen Klasse nicht deklariert sind.
Hier nun mal die Deklaration meiner beiden Klassen:
|
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
|
class character
{
public: //Membervariablen
int m_lifepoints;
int m_strenght;
int m_speed;
int m_cleverness;
int m_skill;
int m_attack_training;
int m_attack;
int m_defense_training;
int m_defense;
int m_magic_strenght;
character ();
int calculate_m_attack ();
int calculate_m_defense ();
};
class inventory
{
public:
int m_goldcoins;
string m_weapon;
int m_attack_value_weapon;
string m_shoes;
int m_defense_value_shoes;
string m_armor;
int m_defense_value_armor;
inventory();
};
|
Die Membervariablen werden dann mittels Konstruktoren initialisiert.
Nun die beiden Memberfunktionen aus der Klasse "character", die Membervariablen aus der Klasse "inventory" benötigen:
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
int character::calculate_m_attack ()
{
m_attack = static_cast<int>(1.5 * (m_attack_value_weapon)) + ((m_strenght + m_speed + m_attack_training)/2);
return m_attack;
}
int character::calculate_m_defense ()
{
m_defense = static_cast<int>(1.5 *(m_defense_value_shoes + m_defense_value_armor)) + ((m_strenght + m_speed + m_defense_training) /2);
return m_defense;
}
|
Wie kann in nun den beiden Funktionen die Variablen mitteilen (Zeiger[wenn ja ,wie?] oder muss ich die benötigten Variablen in die andere Klasse ebenfalls noch einfügen? [möchte wenn möglich keine Parameter als Zahl eingeben müssen])?
Warum gehen friend-klassen/funktionen nicht?
Danke im Vorraus für die Hilfe !!!