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

babelfish

Alter Hase

  • »babelfish« ist der Autor dieses Themas

Beiträge: 1 222

Wohnort: Schweiz

Beruf: Informatiker

  • Private Nachricht senden

1

18.06.2006, 19:47

Verschiedene Funktionen für Klasseninstanzen?

moin,
ich hab' wie schon oft mal wieder ein problem:
kann man denn nicht für jede instanz einer klasse eine eigene Funktion haben?

Beispiel:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class CTestclass
{
public:
    void function();
};

CTestclass Testclass[4];

// ...


Testclass[1].function(){
cout << "1" << endl;
}

Testclass[2].function(){
cout << "2" << endl;
}

Testclass[3].function(){
cout << "3" << endl;
}


Gibt's dafür denn eine andere Variante?
der Compiler will statt einer geschweiften Klammer ein Semikolon,
aber damit würde ich die Funktion nur aufrufen..

schonmal danke für die Antworten

Phil_GDM

Alter Hase

Beiträge: 443

Wohnort: Graz

Beruf: Student-Softwareentwicklung u. Wissensmanagement

  • Private Nachricht senden

2

18.06.2006, 19:55

Re: Verschiedene Funktionen für Klasseninstanzen?

Zitat von »"babelfish"«

moin,
kann man denn nicht für jede instanz einer klasse eine eigene Funktion haben?

Nein - wäre auch unlogisch, denn man definiert ja Klassen und nicht die Instanzen.

Du kannst diesen Effekt jedoch über Funktionszeiger erreichen.

mfg Philipp

babelfish

Alter Hase

  • »babelfish« ist der Autor dieses Themas

Beiträge: 1 222

Wohnort: Schweiz

Beruf: Informatiker

  • Private Nachricht senden

3

18.06.2006, 20:34

naja, schade :(

aber danke für die Antwort,
jetzt muss ich nur noch wieder nachlesen wie Pointer funktionieren :roll:
das verstehen wird aber sicher zu einem grösseren Problem, da ich sie noch nie verstanden habe :oops:

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

4

18.06.2006, 20:50

Für sowas gibt es Vererbung!

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
class Basisklasse
{
public:
    virtual ~Basisklasse() = 0;
    virtual void methode() = 0;
};

class ErsteKlasse : public Basisklasse
{
public:
    ErsteKlasse() { ... }
    ~ErsteKlasse() { ... }
    void methode() { ... } // Implementierung 1

};

class ZweiteKlasse : public Basisklasse
{
public:
    ZweiteKlasse () { ... }
    ~ZweiteKlasse () { ... }
    void methode() { ... } // Implementierung 2

};


In Lua ginge das, was du da vorhast, übrigens problemlos ;)

Steven77

Alter Hase

Beiträge: 515

Wohnort: Münster - Gievenbeach

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

5

18.06.2006, 21:51

Zitat von »"babelfish"«

aber danke für die Antwort,
jetzt muss ich nur noch wieder nachlesen wie Pointer funktionieren
das verstehen wird aber sicher zu einem grösseren Problem, da ich sie noch nie verstanden habe

Du solltest Dich dann tatsächlich mit dieser Thematik verschärft auseinandersetzen, bis Du's verstanden hast. Ansonsten wäre C++ vielleicht nicht ganz das Richtige für Dich, was wohl sehr schade wäre. Aber so schwer ist das doch auch nicht...?

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

6

18.06.2006, 23:21

Andere Frage. Was willst du überhaupt erreichen?
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

babelfish

Alter Hase

  • »babelfish« ist der Autor dieses Themas

Beiträge: 1 222

Wohnort: Schweiz

Beruf: Informatiker

  • Private Nachricht senden

7

19.06.2006, 16:28

Es ist für ein Konsolen RPG,
das ganze ist in etwa gleich aufgebaut wie Ascii-Blocks,
(@David Wenn du es so willst kann ich mir auch einen eigenen basteln,
damit es nicht zuu geklaut ist :oops: der Code war aber sehr hilfreich :) )

Da müsste ich dann bei jedem Fieldtype nur eine Funktion machen die ausgelöst wird, wenn man raufgeht :D

Lemming

Alter Hase

Beiträge: 550

Beruf: Schüler

  • Private Nachricht senden

8

19.06.2006, 19:14

Zitat von »"babelfish"«

Da müsste ich dann bei jedem Fieldtype nur eine Funktion machen die ausgelöst wird, wenn man raufgeht :D

das geht am besten mit vererbung.
du nimmst als basisklasse einfach BasicFieldType. in der deklarierst du ne methode zB OnMoveOver und leitest davon dann deine feldtypen ab.
und wenn dein männchen auf ein feld drauf latscht musst du nur die OnMoveOver methode des betroffenen felds aufrufen und schon läuft das ganze
Es gibt Probleme, die kann man nicht lösen.
Für alles andere gibt es C++...

babelfish

Alter Hase

  • »babelfish« ist der Autor dieses Themas

Beiträge: 1 222

Wohnort: Schweiz

Beruf: Informatiker

  • Private Nachricht senden

9

20.06.2006, 19:41

juhu, klappt :D
thx

Werbeanzeige