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

Errschaffer

Alter Hase

  • »Errschaffer« ist der Autor dieses Themas

Beiträge: 865

Wohnort: Frankfurt

  • Private Nachricht senden

11

14.12.2008, 15:07

Zitat von »"defaultplayer^^

Zitat



C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class B
{
public:
int a;
void set(int t) {a = t;}
};

class A
{
public:
void f(B* o);
};

void A::f(B* o)
{
int a;
cin >> a;
B->set(a);
}


Meinst du das ungefähr so?


Sorry das ich jetzt erst antworte aber ich hatte kaum Zeit.
Also das hier von defaultpalyer^^ ist genau das was ich suche.
Nur komme ich mit dem Code nicht ganz klar.

Also in der Klasse A wird ja eine Funktion erstellt mit einem Zeiger in der Parameter liste. Als Datentyp wird B angeben ich denke das soll die Instanz von Klasse B sein? Dann beim Funktionsaufruf . Das sind doch Zeiger muss da nicht eine Adresse übergeben werden.
also das hier:

C-/C++-Quelltext

1
(&a)
???

int t ist doch so eine Art Platzhalter oder?

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

12

14.12.2008, 15:33

Nein. a wird per Kopie übrgeben.

Wenn du einen Zeiger übergeben willst, musst du die Funktionssignatur anpassen.

C-/C++-Quelltext

1
void set(int* pt) {a = *pt;} 


Dann müsste man die Funktion, wie von dir aufgezeigt, aufrufen.

13

14.12.2008, 15:33

Zitat

Dann beim Funktionsaufruf . Das sind doch Zeiger muss da nicht eine Adresse übergeben werden.
also das hier:

Nein, die Funktion void B::set(int t) nimmt ja einen ganz normalen Integer entgegen.

Errschaffer

Alter Hase

  • »Errschaffer« ist der Autor dieses Themas

Beiträge: 865

Wohnort: Frankfurt

  • Private Nachricht senden

14

14.12.2008, 15:36

Und was macht dieses *?
Und ist das B in der Parametrliste jetzt die Instanz?

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

15

14.12.2008, 15:53

Zitat von »"Errschaffer"«

Und was macht dieses *?
Und ist das B in der Parametrliste jetzt die Instanz?


Der *-Operator dereferenziert hier den Zeiger. (Sprich holt den Wert, auf den der Zeiger zeigt.)

B ist der Typ und o ist die Instanz eines Zeigers auf B.

Schau dir doch am besten nochmal die Grundlagen zu Zeigern und Funktionen an. Du scheinst ziemlich verwirrt zu sein.. :roll:

Errschaffer

Alter Hase

  • »Errschaffer« ist der Autor dieses Themas

Beiträge: 865

Wohnort: Frankfurt

  • Private Nachricht senden

16

17.12.2008, 17:10

Ich glaube ich bin gerade dabei es zu verstehen.
Hab nur ein Porblem.


Zitat

1>d:\porgrammieren\c++\projekte\tic-tac-toe (mit klassen)\tic-tac-toe mit klassen\cpp\player.cpp(15) : error C2143: Syntaxfehler: Es fehlt ';' vor '->'
1>d:\porgrammieren\c++\projekte\tic-tac-toe (mit klassen)\tic-tac-toe mit klassen\cpp\player.cpp(15) : error C2143: Syntaxfehler: Es fehlt ';' vor '->'


Ich liebe solche Fehlermeldungen da man immer genau weiss was los ist :(


C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
void CPlayer::m_Spieler1_Zug (CFeld *o)
{
    int x;
    int y;

    cin>>x;
    cin>>y;

    CFeld->m_Update_Spieler1 (x,y);

}


Was könnte hier mit dem ";" gemeint sein?

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

17

17.12.2008, 17:12

C-/C++-Quelltext

1
o->m_Update_Spieler1 (x,y); 

Errschaffer

Alter Hase

  • »Errschaffer« ist der Autor dieses Themas

Beiträge: 865

Wohnort: Frankfurt

  • Private Nachricht senden

18

17.12.2008, 17:18

Sowas in der Art dachte ich mir auch als ich das Beispiel von defaultplayer^^ gesehen habe. Da hab ich mich auch gewundert wieso der Typ zum Aufrufen benutzt wird.^^
Gut ok jetzt hab ich es verstanden danke.

Werds mal ausprobieren.

edit: ok geht :)

19

17.12.2008, 18:32

Erschaffer
Hast Recht, hab ich garnicht gemerkt. Habs gerade korrigiert.

Werbeanzeige