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

31

30.01.2007, 11:15

Zitat von »"$nooc"«

Zitat


Fehler 1 error C2057: Konstanter Ausdruck erwartet

Fehler 2 error C2466: Zuordnung eines Arrays der konstanten Größe 0 nicht möglich.

Fehler 3 error C2133: 'pStore': Unbekannte Größe


ich check nicht wo das problem liegt O_o


Echt nich? Der Compiler will eine konstante Größenangabe für das Array.
@D13_Dreinig

$nooc

Alter Hase

  • »$nooc« ist der Autor dieses Themas

Beiträge: 873

Wohnort: Österreich / Kärnten

Beruf: Schüler

  • Private Nachricht senden

32

30.01.2007, 11:18

ja... aber die größe des arrays will ich erst im constructor festlegen..
wieso kann ich die größe nicht einfach per variable übergeben? O_o
Am Anfang der Weisheit steht die eigene Erkenntnis, dass man selbst nichts weiß! - Sokrates

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

33

30.01.2007, 11:21

Zitat von »"$nooc"«

ja... aber die größe des arrays will ich erst im constructor festlegen..
wieso kann ich die größe nicht einfach per variable übergeben? O_o


Deswegen gibst so dinge wie Freispeicher und Kontainerklassen.
@D13_Dreinig

koschka

Community-Fossil

Beiträge: 2 862

Wohnort: Dresden

Beruf: Student

  • Private Nachricht senden

34

30.01.2007, 11:25

map doch einfach das 2D Array in ein 1D Array, mit ner Hilfsklasse oder sonstwas...

sowas float *bla[x]; geht natürlich nicht, da Arrays statische objekte sind, wobei die Größe des Arrays zur Laufzeit fest ist, kann als nicht durch x verändert werden. => new & delete.


Ich würde euch aber mal bitten beim Thema "Verebung" zu bleiben.

$nooc

Alter Hase

  • »$nooc« ist der Autor dieses Themas

Beiträge: 873

Wohnort: Österreich / Kärnten

Beruf: Schüler

  • Private Nachricht senden

35

31.01.2007, 15:08

also ich hab jetzt etwas neues gemacht.. das mit dem inventar ist mir doch noch irgendwie zu komplex... O_o

ich versuch es jetzt mit was ganz einfachen..

ich mach eine klasse CRaumschiff und eine klasse CJaeger

CJaeger soll von CRaumschiff die wichtigsten methoden erben.. die sind alle public.. also is klar.. CJaeger erbt public von CRaumschiff

jetzt ist aber so dass ich mich frage, soll CJaeger auch private erben?
im private bereich stehn sachen wie m_Health, m_MaxSpeed usw.
.. wenn CJaeger von CRaumschiff public und private erbt, ist dass dann noch im sinne von OOP? oder sollte ich das anders lösen?
Am Anfang der Weisheit steht die eigene Erkenntnis, dass man selbst nichts weiß! - Sokrates

grek40

Alter Hase

Beiträge: 1 491

Wohnort: Dresden

  • Private Nachricht senden

36

31.01.2007, 15:45

Ich glaube du hast das mit dem public, private und protected noch nicht ganz verstanden:

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
23
24
25
26
27
class Base
{
public:
  Base();
  virtual ~Base();

  virtual void calculate();
protected:
  int _test1;
private:
  int _test2;
};

class Derived1 : public Base
{
  // Zugriff auf public und protected der Basisklasse - selbe Zugriffsebene

};

class Derived2 : protected Base
{
  // Zugriff auf public und protected der Basisklasse - Zugriffsebene: protected - kein Zugriff von außen, jede weitere Ableitung erbt ebenfalls protected oder sicherer

};

class Derived3 : private Base
{
  // Zugriff auf public und protected der Basisklasse - Zugriffsebene: private - kein Zugriff von außen, in jeder weiteren Ableitung ist die Funktionalität der Basisklasse komplett verborgen

};

koschka

Community-Fossil

Beiträge: 2 862

Wohnort: Dresden

Beruf: Student

  • Private Nachricht senden

37

31.01.2007, 17:32

kurzum... Welche Werte braucht den Jäger? Sicherlich ist ein Jäger auch ein Raumschiff und hat somit Werte wie Schild und Speed oder?

Kurzum, jeder Raumgleiter hat doch sowas, auch wenn diese mehr oder nicht so gut bei jenem Modell ausgeprägt sind...

Die Attribute, die jeder Raumgleiter haben soll, müssen als sichtbar für Erben - protected sein.


Desweiteren hat ein Jäger ja nicht so starke bewaffnung, ist eher schnell und nicht so angriffsstark. Deswegen geben wir jedem Jäger nur zwei oder drei Slots an Bewaffnung, die sollen wieder protected sein, da JEDER Jäger das ja haben soll.

Nun vererben wir weiter, wir haben eine Stuka und einen Xing Wing, die Stuka ist sehr schnell, wendig, leicht und hat nur MG. Der Xing Wing, dagegen Photonenlaser, mit diesen Waffen füllen wir unsere "Waffen Slots", Waffen Slots (bei Jägern waren es 3) erwarten ein Objekt vom Typ Weapon.... Wepon ist ebenfalls hierarchisch unterteilt in Bomben, Geschütze, Starke Geschütze .....

$nooc

Alter Hase

  • »$nooc« ist der Autor dieses Themas

Beiträge: 873

Wohnort: Österreich / Kärnten

Beruf: Schüler

  • Private Nachricht senden

38

31.01.2007, 18:00

ok.. also ich denke ich hab das ganze jetzt gecheckt ;)

hab nur eine kleine frage nebenbei..

mal angenommen

CJaeger erbt public und protected v. CRaumschiff

bei CRaumschiff hab ich eine const unsigned long Variable
der compiler meckert und sagt:

error C2758: 'CRaumschiff::Variable' : must be initialized in constructor base/member initializer list

ich versteh das jetzt nicht.. in welchen constructor soll ich die nun initialisieren? ^^
gehn tuts in keinem :P
Am Anfang der Weisheit steht die eigene Erkenntnis, dass man selbst nichts weiß! - Sokrates

Das Gurke

Community-Fossil

Beiträge: 1 996

Wohnort: Pinneberg

Beruf: Schüler

  • Private Nachricht senden

$nooc

Alter Hase

  • »$nooc« ist der Autor dieses Themas

Beiträge: 873

Wohnort: Österreich / Kärnten

Beruf: Schüler

  • Private Nachricht senden

40

31.01.2007, 18:12

jetzt kommt der witz:

wenn CJaeger v. CRaumschiff erbt..
dann is ja wohl CRaumschiff::CRaumschiff() der tiefste constructor..

wenn ich die membervariable "const int test"
im constructor v. CRaumschiff initialisiere dann kommt dieselbe fehlermeldung

wen ich schon dabei bin.. wie verlässt man eine funktion? ^^

in VB war das einfach "Exit Sub"

wie lautet die anweisung noch schnell? ^^
Am Anfang der Weisheit steht die eigene Erkenntnis, dass man selbst nichts weiß! - Sokrates

Werbeanzeige