Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » unterschiedliche Objecte

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
14.04.2010, 20:21 Uhr
~Zetti
Gast


Hallo,

Ich arbeite zur Zeit an einem kleinen Spiel anhand der SDL Library. Nun läuft eigentlich alles ganz gut nur habe ich folgendes Problem.
ich habe eine Klasse:

class object{};

Diese enthält alle wichtigen informationen über jedes Object, sprich: X, Y, xGeschwindigkeit,...,name, usw.

So kann ich mir einen Vector der Klasse "object" erzeugen und diese einzelnen Objekte dann alle zeichnen lassen. AAAABER:
Die verschiedenen Objecte sollen sich unterschiedlich verhalten.
wenn ich auf Object[1] klicke soll "Hallo Spieler" stehen,
bei Object[2] sollte aber "Hey wie gehts" stehen.

Hoffe ich hab mich jetzt klar ausgedrückt. Das Spiel sollte ein Point and Click Adventure werden also gäbe es pro level einige Objekte also wäre es mir lieber wenn jedes object eine art eigenen main funktion hätte die sich aber zwischen Object[1] und Object[2] unterscheidet. Bin für alle Ideen offen und hoffe ihr könnt mir irgendwie helfen, mit Tipps oder Tutorials oder alles was euch einfällt, danke schonmal lg
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
14.04.2010, 22:07 Uhr
0xdeadbeef
Gott
(Operator)


Naja, der normale Weg wäre, ein virtuelles Interface für die Klasse object zu entwerfen und die eigentlichen Objekte dann polymorphisch zu behandeln. Beispielsweise so:

C++:
#include <iostream>
#include <string>

class object {
public:
  virtual std::string message() const = 0;
  virtual ~object();
};

class hallo {
public:
  virtual std::string message() const;
};

class wie_gehts {
public:
  virtual std::string message() const;
};

object::~object() { }
std::string hallo::message() const { return "Hallo, Spieler!"; }
std::string wie_gehts::message() const { return "Hey, wie geht's?"; }

void print_message(object const &obj) {
  std::cout << obj.message() << std::endl;
}

int main() {
  hallo h;
  wie_gehts w;

  print_message(h);
  print_message(w);
}


Wenn du dir viele Objekte vorhalten musst (was du ja hier nicht flach kannst), wird es wahrscheinlich Sinn machen, sich mit intelligenten Zeigern auseinanderzusetzen, etwa std::tr1::shared_ptr (sofern dein Compiler TR1 bereits beherrscht) oder Boost.Smart_Ptr bzw. Boost.Ptr_Container - das hilft, Speicherlöcher zu vermeiden.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
16.04.2010, 19:10 Uhr
~Zetti
Gast


Hi wieder,

Ok hab jetzt zwar ne weile gebraucht aber jetzt läufts eigentlich so wie ichs mir wünschte. Die Sache mit den Boost.Ptr_Container ist ja eine super Sache, auch wenn ich bei der Installation (für Dev-C++) 3 Anläufe brauchte . Danke 0xdeadbeef hast mir wirklich sehr geholfen.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: