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

1

03.08.2003, 15:16

#pragma pack in C++

Quellcode

1
#pragma pack(1)

verwendet man ja um keine Speicherlücken in einer Struktur zu haben um Daten direkt in sie kopieren zu können.

1. Wofür die 1? Heißt das, dass immer das 1 nächste Byte das nächste Strukturelement sein soll?
2. Gilt das das ganze auch für Klassen, weil in C++ verwendet man ja eigentlich kein struct mehr.
Ein Gespenst geht um in Europa...

2

04.08.2003, 03:05

Wenn ich das recht in erinnerung hab, gibt die Zahl in den Klammern an, in welchen Byte schritten die Daten gespeichert werden. Normal sind eigentlich immer 4 Byte, da die heutigen Prozessoren damit schneller rechnen können.

@2tens
Natürlich benutzt man in C++ noch struct. Die Strukturen unterliegen den selben gesetzen wie die Klassen. Mit einem unterschied. Bei Klassen ist alles Privat und bei Strukturen ist alles Öffentlich.
Wichtig! Ich übernehme keinerlei Verantwortung für eventl. Datenverlust oder Schäden am Rechner ;D

Patrick

Alter Hase

Beiträge: 1 264

Wohnort: Düren

Beruf: Fachinformatiker für Anwendungsentwicklung

  • Private Nachricht senden

3

04.08.2003, 09:05

@DragonMaster:
Die Verwendung von struct in C++ ist laut Stroustrup nicht schön und man solle sie nur im "Notfall" benutzen. << Ob das zu 100% stimmt weis ich net bin bei Google nur öfters drüber geflogen. Scheint wohl was dran zu sein.

4

04.08.2003, 16:33

Ja, hier streiten sich die Geister ;) Es heißt auch Zitat: "(c) Benutzen sie keine public-Elemente." Was heißt das man z.B. einen Vertex sehr umständlich Implementieren müste. Strukturen haben schon ihre Lebensberechtigung.
Wichtig! Ich übernehme keinerlei Verantwortung für eventl. Datenverlust oder Schäden am Rechner ;D

Patrick

Alter Hase

Beiträge: 1 264

Wohnort: Düren

Beruf: Fachinformatiker für Anwendungsentwicklung

  • Private Nachricht senden

5

04.08.2003, 17:17

also ich nehm für Verticesstrukturen immer klassen :D

6

04.08.2003, 17:30

Dann sieht deine Implementation wohl so aus

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
class Vertex
{
  D3DVECTOR3 m_vPosition;
  D3DVECTOR3 m_vTexture;

public:
  // Konstruktoren

  D3DVECTOR3 GetPosition() { return m_vPosition; }
  D3DVECTOR3 GetTexCoord() { return m_vTexture; }
  void SetPosition(const D3DVECTOR3& v) { m_vPosition = v; }
  void SetTexCoord(const D3DVECTOR3& v) { m_vTexture = v; }
}:
Denn so mußt du dann die Vertexklasse Implementieren. Da es in der Objektorientierten Programmierung keine Öffentliche Eigenschaften erlaubt sind.

Objektorientiert Programmieren in allen Ehren. Aber ich denke man kann es auch Übertreiben.
Wichtig! Ich übernehme keinerlei Verantwortung für eventl. Datenverlust oder Schäden am Rechner ;D

Patrick

Alter Hase

Beiträge: 1 264

Wohnort: Düren

Beruf: Fachinformatiker für Anwendungsentwicklung

  • Private Nachricht senden

7

04.08.2003, 17:37

so sieht sie in der tat FAST aus ;) nur ich benutz nen Constructor damit ich einfach sowas schreiben kann ;)

Quellcode

1
2
VERTEX v;
v = VERTEX (x, y, z, color, u, v); // und noch paar andere sachen ;)


also ich finds schööön :angel:

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

8

04.08.2003, 17:41

Für mein neues Spiel habe ich meinen Programmierstil auch noch ein bisschen verbessert. Ich verwende jetzt auch die STL, schöne Singletons, Template-Klassen (z.B. für einen Spline-Controller, der dann alles interpolieren kann, was die entsprechenden Operatoren definiert).
Aber für viele Dinge nehme ich einfach nur structs. Da finde ich auch, dass man es nicht übertreiben sollte...

9

04.08.2003, 19:28

Was allerdings recht nützlich sein kann ist so was

Quellcode

1
2
3
4
5
6
struct Vertex
{
  static DWORD FVF = D3DFVF_XYZ | D3DFVF_NORMAL | D3DFVF_TEX1;

  // Vertexdaten
};
Dann hat man nicht immer so viele Globale Vertexdefinitionen.
Wichtig! Ich übernehme keinerlei Verantwortung für eventl. Datenverlust oder Schäden am Rechner ;D

Patrick

Alter Hase

Beiträge: 1 264

Wohnort: Düren

Beruf: Fachinformatiker für Anwendungsentwicklung

  • Private Nachricht senden

10

04.08.2003, 19:43

pervers wenn schon const! einfach pervers... ;D

Werbeanzeige