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

11

28.07.2011, 14:36

Hmm ... werde das mit den Interface mal versuchen .. habe ich bisher noch nie verwendet (jedenfalls wäre mir das nicht bewusst ^^) ... Wird sicher interessant =)
Vielen Danke schonmal :thumbup:

12

29.07.2011, 14:13

Aso ich weiß nicht .. Ich komm mit den Interfaces nicht so ganz weiter.
Die Buttons die ich erstelle schiebe ich ja in einen vector. In der Struktur ist der ActionListener des jeweiligen Buttons ... Die Klasse CGui stellt sozusagen das ganze
Fenster dar, in dem die Buttons dann sind.

Was ich nicht verstehe: Wenn ich jetzt ein Interface verwende, hätte ich doch nur noch einen ActionListener für alle Buttons?
Ich will es ja so programmieren, dass ich für viele verschiedene Buttons einen eigenen ActionListener habe, wobei ich nicht weiß, wie viele Buttons es sein werden (Werden über AddButton ja erstellt).
Wenn ich das mit den Interface richtig verstehe müsste ich ja dann in dem eine rein virtuelle Funktion haben, die meinen ActionListener darstellt, die ich dann in meiner CMap Klasse definieren müsste

Oder was das so gemeint, dass ich in meiner CMap klasse dann auch für jeden Button, den ich anlegen will, ein eigenes Interface implementieren soll? Kommt mir jetzt ein wenig nach overflow vor .. sorry falls ich mich irre *grins*

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

13

30.07.2011, 12:15

Ich würde gar nicht so unflexible Sachen machen. Benutz doch einfach die Features, die C++11 bald bringen werden. VS unterstützt die z.B schon.
std::function heisst das Zauberwort.

Einmal ein typedef machen:

C-/C++-Quelltext

1
typedef std::function<void(ButtonType&)> ButtonCallbackType;


Und dann wie eine Variable benutzen:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
class Button
{
public:
Button(ButtonCallbackType callback);

private:
ButtonCallbackType mCallback;
};


Und dann kannst du da freie Funktionen, Memberfunktionen oder Funktoren übergeben:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
void (ButtonType b);

class Foo
{
void specialCallback(ButtonType b);
};

int main()
{
Foo f;
Button b(std::bind(&Foo::specialCallback, &foo, std::placeholders::_1));
Button b2(bar);
}

Das reduziert das ganze Problem.

14

30.07.2011, 13:31

Vielen Dank, wusste nicht, dass bald eine neue C++ version rauskommt :thumbsup:
Ich verwende VS2010, daher sollte das kein Problem darstellen, vielen dank für den Tipp :)

Liebe Grüße, Ombalat

Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

15

30.07.2011, 13:53

"Bald" ist gut. Eig. erwartet man sie schon seit 2009.
Hier: http://de.wikipedia.org/wiki/C%2B%2B0x#W…sprache_C.2B.2B
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

jokester

Treue Seele

Beiträge: 125

Wohnort: Mainz

  • Private Nachricht senden

16

30.07.2011, 13:57

Stört aber auch nicht so, der Final Draft ist immerhin seit einiger Zeit fertig, das Feature-set bekannt, und solang die Compiler alles implementieren ist das Erscheinen des Standards ja nur ne Formsache.
Und weils vllt. für den einen oder anderen interessant ist: http://gcc.gnu.org/projects/cxx0x.html Auflistung der Features, und wieweit die im GCC schon implementiert sind. Für VS gibts auch irgendwo ne Liste, find ich grad nur auf die schnelle nicht.
edit: habs, http://blogs.msdn.com/b/vcblog/archive/2…-the-table.aspx
"There is a theory which states that if ever anyone discovers exactly what the Universe is for and why it is here, it will instantly disappear and be replaced by something even more bizarre and inexplicable. There is another theory which states that this has already happened" -- Douglas Adams.

Werbeanzeige