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

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

11

11.07.2008, 18:40

Von wo willst du die Methoden denn aufrufen?
@D13_Dreinig

12

11.07.2008, 19:29

Ziel ist es 5 Managerklassen zu haben von denen jede Zeiger auf alle anderen ManagerKlassen (Objekte ) hat.

Es soll also in allen 5 Klassen möglich sein die Methoden der anderen Klassen ( Objekte ) aufzurufen.


Also im obigen Beispiel soll Klasse A alle Methoden von Klasse B und anderst herum aufrufen können.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

13

11.07.2008, 22:23

Zitat von »"chriss"«

Ziel ist es 5 Managerklassen zu haben von denen jede Zeiger auf alle anderen ManagerKlassen (Objekte ) hat.


Um was für Managerklassen handelt es sich da? Der Beschreibung nach erscheint es mir als ziemlich fragwürdig ob das auch wirklich ein erstrebenswertes Ziel ist...

14

12.07.2008, 00:20

Bei 3 wo es wichtig wäre handelt es sich um
- RemoteConsole
- SkriptManager
- Server ( Hauptklasse )

Der SkriptManager soll etwas auf der Konsole ausgeben können und die Konsole soll Skripte ausführen können.

Ich habe mein Design aber schon etwas angepasst um derzeit ohne diesen Zirkel auszukommen. Prinzipiell würde ich aber schon gerne wissen ob und wie das in C++ geht.

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

15

12.07.2008, 06:27

Normal kannst du in deiner Implementations-Datei alle Methoden, der jeweiligen Klassen, aufrufen. Du musst nur die entsprechenden Header vor deine Definitionen inkludieren.
@D13_Dreinig

16

12.07.2008, 10:37

Hey danke david_pb du hast mir den entscheidenden Hinweis gegeben.
Das Problem war unter Anderem, dass ich wie in C#/Java die Funktionen direkt in die Klassendefinition mit reingeschrieben habe ( also nur 1 Datei anstelle von 2 ).
Ich habe das jetzt aufgeteilt und die vorherigen Lösungsvorschläge mit eingebaut. Jetzt geht es.
Hier noch der Inhalt aller Dateien, falls noch mal jemand so ein Problem hat.

Grüße

classA.h

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#ifndef CLASSA_H
#define CLASSA_H


class B;
#include "classB.h"

class A
{
public:
    B* b;
    void funcA();
};

#endif


classB.h

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#ifndef CLASSB_H
#define CLASSB_H


class A;
#include "classA.h"

class B
{
public:
    A* a;
    void funcB();
};

#endif


classA.cpp

C-/C++-Quelltext

1
2
3
4
5
6
#include "classA.h"

void A::funcA()
{
    b->funcB();
}


classB.cpp

C-/C++-Quelltext

1
2
3
4
5
6
#include "classB.h"

void B::funcB()
{
    a->funcA();
}


main.cpp

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
#include "classA.h"
#include "classB.h"

int main(int argc, char** args)
{
    A a;
    B b;

    a.b = &b;
    b.a = &a;

    return 0;
}

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

17

12.07.2008, 13:23

Die Include-Direktiven brauchst du in den Headern von classA und classB nicht. Das spart dir Abhängigkeiten und vieel Stress! ;)
@D13_Dreinig

Werbeanzeige