Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Jonathan_Klein Living Legend
Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 14.10.2004, 14:54 Titel: union Frage |
|
|
Also, ich hab das im Quellcode irgendwo geshene und wollte es nacmachen:
Code: |
struct SimpleVertex
{
union
{
struct
{
float x, y, z;
};
D3DXVECTOR3 vPosition;
};
D3DXVECTOR3 vNormal;
D3DCOLOR Color;
}; |
error C2620: Union '__unnamed' : Element 'vPosition' besitzt benutzerdefinierten Konstruktor oder bedeutenden Standardkonstruktor
Ich wollte das so machen, da ich eignelich auf Vektoren umsteigen wollte statt einzelne Variablen, aber nich alles ändern wollte, und s isses doch auch eleganer wenn mans unter beiden Namen ansprechen kann. _________________ https://jonathank.de/games/ |
|
Nach oben |
|
|
Fallen JLI MVP
Alter: 40 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 14.10.2004, 15:46 Titel: |
|
|
Das sind aber vollkommen unterschiedliche Situationen. Das geht vom Speicherzugriff nicht, denn woher soll der Kompiler wissen das simplevertex.x das gleiche ist wie simplevertex.vPosition.x und nicht sogar simplevertex.vPosition(...) _________________ "I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse." |
|
Nach oben |
|
|
Jonathan_Klein Living Legend
Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 14.10.2004, 15:57 Titel: |
|
|
tja, äh ich habe davon keine Ahnung, aber das heir geht ganz offensichtlich:
Code: |
class TRIBASE_API tbColor
{
public:
// Variablen
union
{
struct
{
float r; // Rot-, Gruen-, Blau- und Alphakomponente
float g;
float b;
float a;
};
struct
{
float fRed; // Rot-, Gruen-, Blau- und Alphakomponente
float fGreen;
float fBlue;
float fAlpha;
};
float c[4]; // Array der Komponenten
D3DCOLORVALUE D3DColorValue; // Farbe als D3DCOLORVALUE
};
//hier käme noch ganz viel...
}
|
Und so wie es da ist, wollte ich es halt auch machen. Man kann entweder c[0] oder fRed oder r schreiben, das ist alles im Prinzip dasselbe. _________________ https://jonathank.de/games/ |
|
Nach oben |
|
|
Fallen JLI MVP
Alter: 40 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 14.10.2004, 15:59 Titel: |
|
|
Da können auch alle elemente an der gleichen speicherposition aufbewahrt werden, auch die D3DCOLORVALUE
Code: | typedef struct _D3DCOLORVALUE {
float r;
float g;
float b;
float a;
} D3DCOLORVALUE; |
Wenn nun aber ne Struktur oder klasse mit ner Funktion oder ähnlichem auftaucht dann geht das nicht mehr. _________________ "I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse." |
|
Nach oben |
|
|
Jonathan_Klein Living Legend
Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 14.10.2004, 18:51 Titel: |
|
|
achso, das geht also mit Strukturen und Variablen aber nicht mit Klassen?
Muss ich dann statt D3DXVECTRO3 lieber D3DVECTOR nehmen? (So isses nämlich in der Vektor Klasse der Tribaseengine gemacht) _________________ https://jonathank.de/games/ |
|
Nach oben |
|
|
Fallen JLI MVP
Alter: 40 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 14.10.2004, 18:58 Titel: Re: union Frage |
|
|
So vieleicht.
Code: |
struct SimpleVertex
{
union
{
struct
{
D3DXVECTOR x, y, z;
};
D3DXVECTOR3 vPosition;
};
D3DXVECTOR3 vNormal;
D3DCOLOR Color;
}; |
_________________ "I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse." |
|
Nach oben |
|
|
Kronos Senior JLI'ler
Anmeldedatum: 19.03.2004 Beiträge: 290
Medaillen: Keine
|
Verfasst am: 02.01.2005, 20:05 Titel: |
|
|
Sorry, dass ich den Thread jetzt nochmal ausgrabe, hab aber bezüglich Fallens Codechunk ne Frage:
Wo wäre der Unterschied zwischen
Code: |
typedef struct _D3DCOLORVALUE {
float r;
float g;
float b;
float a;
} D3DCOLORVALUE; // diesem
// und
struct _D3DCOLORVALUE {
float r;
float g;
float b;
float a;
} D3DCOLORVALUE; // jenem
|
Wieso wird die struct ge-type-def-t?
Ich habe diese typedef structs neulich wieder im Quake1,2 und 3 source gelesen und frage mich immernoch, wieso die ge-typedef-t werden (obwohl es eigentlich eine andere frage bzgl. der structs im quake source war, aber das ist ein anderes thema..).
Edit: War das nicht auch so, wenn man sie typedef-t, dass man dann keinen Namen verwenden muss, für 'ne neue structurinstanz? (weiß nicht, wie man das bei structs nennt)
Man könnte ja dank dem typedef den Namen der struct weglassen und trotzdem mit D3DCOLORVALUE eine Instanz (..) erzeugen.. |
|
Nach oben |
|
|
Zyrian Super JLI'ler
Anmeldedatum: 30.08.2003 Beiträge: 321 Wohnort: Essen Medaillen: Keine
|
Verfasst am: 02.01.2005, 20:53 Titel: |
|
|
das ist ne alte C-Schreibweise iirc
braucht man heute nicht mehr zu machen bei structs... _________________ Schau mir in die Augen, Kleines. |
|
Nach oben |
|
|
Kronos Senior JLI'ler
Anmeldedatum: 19.03.2004 Beiträge: 290
Medaillen: Keine
|
Verfasst am: 02.01.2005, 21:05 Titel: |
|
|
Ayo, gut, soweit war ich auch schon
Danke trotzdem. |
|
Nach oben |
|
|
Patrick Dark JLI Master
Anmeldedatum: 25.10.2004 Beiträge: 1895 Wohnort: Düren Medaillen: Keine
|
|
Nach oben |
|
|
Kronos Senior JLI'ler
Anmeldedatum: 19.03.2004 Beiträge: 290
Medaillen: Keine
|
Verfasst am: 03.01.2005, 14:00 Titel: |
|
|
Nunja, du hast was von "Nach C96 Standard verwendet das keiner mehr" gefaselt und naja, ich dachte, es gäbe noch 'nen anderen Unterschied, aber wenn die D3D Programmierer solche "Schlampen" sind.. |
|
Nach oben |
|
|
Patrick Dark JLI Master
Anmeldedatum: 25.10.2004 Beiträge: 1895 Wohnort: Düren Medaillen: Keine
|
|
Nach oben |
|
|
|