Guten Tag ihr lieben,
ich habe eine verstädnis Frage:
Wenn ich mit einer Klasse(Class A) auf eine andere Datei einer anderen Klasse(Class B) zugreifen möchte muss ich ja eine Instanz der Klasse(in ClassA eine Classb Instanz), auf die ich zugreifen möchte, in der Klasse erstellen und kann dann, mit der erstellten Instanz,auf sie zugreifen.
Wenn jetzt aber die Datei "privat" ist funktioniert das natürlich nicht außer ich schreibe mir z.B eine GetterMethode. Und da habe ich eine Frage:
|
Quellcode
|
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
|
#include <SFML/Graphics.hpp>
//ClassA CPP
void ClassA::Render()
{
ClassB *Player;
Player = new ClassB; //Erstelle eine Instanz von der ClassB
Player->Render(this); //Überge der ClassB
return 0;
}
//ClassA HPP
ClassA
{
public:
const sf::RenderWindow &getWindow() {return *pWindow;]; //Mit der Getter möchte ich der ClassB zugriff auf die PWindow datei geben
private:
sf::RenderWindow *pWindow; //Soll privat bleiben
};
classB
{
public:
void Render(ClassA *Bild);
private:
sf::Sprite mPlayerSprite; //
};
//ClassB CPP
void ClassA::Render(CLassA *pClassA)
{
*pClassA->getWindow()->draw(*mPlayerSprite);
|
Der Code muss nicht unbedingt Sinn machen , soll nur mein Problem verdeutlichen:
Meine Denkweise/Frage - Mein HauptZiel ist es, die MemberVariabel "pWindow" nicht privat zu machen. Deswegen habe ich mir eine getter Methode geschrieben womit ich diese DAtei bekommen kann.
Jetzt übergebe ich meiner anderen Klasse (In der ich diese Datei brauche) die Klasse ClassA damit ich auf die Getter Methode zugreifen kann. Theoretisch, wenn ich das alles Funktioniert
greife ich auf die SFML datei Draw zu und kann MplayerSprite zeichnen - Fertig.
Es Funktioniert alles sehr gut wenn ich PWindow privat mache und einfach pWindow mit übergebe. Jedoch funktioniert das nicht so wirklich mit der Getter weil er mir den Fehler anzeigt:
"Der Asudruck muss einen ZeigerTyp aufweisen(Zeile 42)"
Frage 1: Wie kann ich diese Fehler meldung umgehen/lösen?
Frage 2: gibt es "leichtere" methoden, dass zb eine andere Klassen auf Daten von anderer Klassen zugreifen kann
vllt sogar das man keine Instanz erstellen muss)
Ich bin eigentlich eher der Typ der eher sucht bevor er was schreibt aber ich habe keine wirkliche passende Antwort auf meine Frage gefunden. Meine Erfahrung beschränkt sich auf 2 Monate (gerade das Buch von Kalista durchgelesen) c++ (auch allg. Programmieren) Erfahrung. Ich hoffe, dass die Frage nicht zu doof ist.
Ich bedanke mich schonmal im voraus
grüße Cy