JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=6a8f8c2db03915ccc5ea9f0fa1f8052aMedaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Variablentyp in einer Variablen
Gehe zu Seite 1, 2  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
The Lord of Programming
Living Legend


Alter: 37
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 21.06.2004, 18:16    Titel: Variablentyp in einer Variablen Antworten mit Zitat

Hi,

gibt es in VC++ irgendeine Möglichkeit, Variablentypen in einer Variable zu speichern. Das klingt vielleicht erst ein bisschen paradox, aber ich will einfach nur variable Typen haben.
D.h. dass z.B. eine short reserviert wird(oder ein integer/long/etc...).
Das würde mir viel Code sparen.

Bsp-Pseudo:
Code:
if(xy) variablentyp=BYTE;
else variablentyp=int;

variablentyp kontext_abhaenige_variable=5;

_________________
www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console


Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
HotAcid
Super JLI'ler


Alter: 43
Anmeldedatum: 04.08.2002
Beiträge: 372
Wohnort: Berlin
Medaillen: Keine

BeitragVerfasst am: 21.06.2004, 18:53    Titel: Antworten mit Zitat

sieh dir mal ne union an:

Code:

typedef union blabla
{
    int a;
    char* bla;
    vector<ganzKomplizierterDatentyp> v;
} blabla;


es wird soviel Platz reserviert, wie für den größten Datentyp notwendig ist. Die Union kann dann genau einen Datentyp enthalten, oben also ENTWEDER ein int ODER ein char* ODER nen vector. Zugriff erfolgt dann wie bei structs/Klassen über ->, also blabla.a = 5

bei der Syntax bin ich mir da jetzt nicht extrem sicher, also nochmal nachsehen

viele Grüße
Felix
_________________
StGB §§ 328 Abs. 2 Pkt 3:
Mit Freiheitsstrafe bis zu fünf Jahren oder mit Geldstrafe wird bestraft, wer eine nukleare Explosion verursacht.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Fallen
JLI MVP
JLI MVP


Alter: 40
Anmeldedatum: 08.03.2003
Beiträge: 2860
Wohnort: Münster
Medaillen: 1 (mehr...)

BeitragVerfasst am: 21.06.2004, 19:04    Titel: Antworten mit Zitat

@HotAcid

Ich glaub nicht das er sowas gesucht hat denn so muss er immer noch explizit angeben welchen Datentyp er denn wählen möchte. Er möchte ja nur

blablabla.Variablentyp=int ;

zum setzen und

blablabla.Variablentyp a=0;

zum verwenden, aber ehrlich gesagt glaube ich nicht das sowas möglich ist.
_________________
"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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 21.06.2004, 19:13    Titel: Antworten mit Zitat

Vieleicht könnte man ne Klasse schreiben:

enum eTyp{int, short, usw.}

class UniversalVariable
{
SetTyp(eTyp)
eTyp mTyp;

union()//siehe odeb
operator +
operator -
usw.
}

in der Operatoren könnte man je nach verwendeten Typ anders definiern.
Hoffentlich kann man das jetz kapieren
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Christian Rousselle
Site Admin


Alter: 48
Anmeldedatum: 19.07.2002
Beiträge: 1630

Medaillen: Keine

BeitragVerfasst am: 21.06.2004, 19:22    Titel: Antworten mit Zitat

Das mit dem enum wird nicht klappen, man kann keine Typen aufzählen. Ev. kommt man mit templates weiter.

C.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 21.06.2004, 19:30    Titel: Antworten mit Zitat

Ich meinte das mit dem enum auch eher so:
enum(INT, SHORT)
also nicht die Typen sondern nur quasi ein Symbol für den Typ.
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
The Lord of Programming
Living Legend


Alter: 37
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 21.06.2004, 20:47    Titel: Antworten mit Zitat

Hmm...ich verstehe noch nicht ganz, was eine Union ist.
Auf den ersten Blick sieht das ja gleich wie eine Klasse oder Struktur aus.

Aber was ist da anders? Surprised
_________________
www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console


Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Fallen
JLI MVP
JLI MVP


Alter: 40
Anmeldedatum: 08.03.2003
Beiträge: 2860
Wohnort: Münster
Medaillen: 1 (mehr...)

BeitragVerfasst am: 21.06.2004, 20:51    Titel: Antworten mit Zitat

bei einer union teilen sich alle elemente die gleiche Anfangsadresse.

Code:
..union.. {
  int a;
  float b;
}


angenommen a hat die adresse 0xC000000

dann hat b die adresse 0xC000000

man sollte das aber nicht damit verwechseln das beide einträge den gleichen inhalt haben, sonst kann man schnell ein blaues Wunder erleben.
_________________
"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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
The Lord of Programming
Living Legend


Alter: 37
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 21.06.2004, 21:00    Titel: Antworten mit Zitat

Aha...
dann kann man sozusagen mit einer Union Speicher reservieren und wenn sie eine BYTE-Variable hat, greift man eben nur auf die ersten 8 Bits zu.(Stimmt das jetzt?)
_________________
www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console


Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Fallen
JLI MVP
JLI MVP


Alter: 40
Anmeldedatum: 08.03.2003
Beiträge: 2860
Wohnort: Münster
Medaillen: 1 (mehr...)

BeitragVerfasst am: 21.06.2004, 21:11    Titel: Antworten mit Zitat

aber warum sollte man eine union nur für eine BYTE machen Wink

aber ja es stimmt so
_________________
"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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Hazel
JLI MVP
JLI MVP


Alter: 40
Anmeldedatum: 19.07.2002
Beiträge: 1761

Medaillen: Keine

BeitragVerfasst am: 21.06.2004, 21:13    Titel: Antworten mit Zitat

Schau dir mal typeid() u.ä. an.
_________________
*click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Fallen
JLI MVP
JLI MVP


Alter: 40
Anmeldedatum: 08.03.2003
Beiträge: 2860
Wohnort: Münster
Medaillen: 1 (mehr...)

BeitragVerfasst am: 21.06.2004, 21:49    Titel: Antworten mit Zitat

typeid liefert dir auch nur ne zeichenkette/klasse zurück mit der er aber keine dynamischen variyblen erzeugen kann die immer wieder andere typen haben können. Allerdings frage ich mich wirklich wozu du das brauchst. Sag mal. Vieleicht können wir dich wieder auf den redlichen Pfad Gottes leiten Wink
_________________
"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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Kampfhund
Super JLI'ler


Alter: 42
Anmeldedatum: 20.07.2002
Beiträge: 408

Medaillen: Keine

BeitragVerfasst am: 22.06.2004, 12:04    Titel: Antworten mit Zitat

Vielleicht könnte man da Boost::any verwenden.
Ich habe Boost allerdings nie verwendet und kenne mich damit nicht aus.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
The Lord of Programming
Living Legend


Alter: 37
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 22.06.2004, 14:09    Titel: Antworten mit Zitat

FallenAngel84 hat Folgendes geschrieben:
Allerdings frage ich mich wirklich wozu du das brauchst. Sag mal. Vieleicht können wir dich wieder auf den redlichen Pfad Gottes leiten Wink

Also gut...*gg*
Ich brauche das für das JLI-Format.
Manchmal ändert sich eben nur die größe einer Variable bzw. die Anzahl von Bytes, die für einen Wert reserviert(und in die Datei geschrieben) werden.
Bloß wäre es mühsamer, für BYTE, short, uint, etc... jeweils einzeln die Codeabschnitte zu kopieren und abzuändern.
_________________
www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console


Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Fallen
JLI MVP
JLI MVP


Alter: 40
Anmeldedatum: 08.03.2003
Beiträge: 2860
Wohnort: Münster
Medaillen: 1 (mehr...)

BeitragVerfasst am: 22.06.2004, 14:13    Titel: Antworten mit Zitat

Gehen templates nicht ?
_________________
"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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung Alle Zeiten sind GMT
Gehe zu Seite 1, 2  Weiter
Seite 1 von 2

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum