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: 11.03.2005, 18:57 Titel: Array als template? |
|
|
wieso geht sowas net?
CPP: | std::list<float[3]> m_VPos;
|
Code: | D:\Programme\Microsoft Visual Studio\VC98\INCLUDE\list(238) : error C2102: '&' erwartet L-Wert
D:\Programme\Microsoft Visual Studio\VC98\INCLUDE\list(235) : Bei der Kompilierung der Member-Funktion 'class std::list<float [3],class std::allocator<float [3]> >::iterator __thiscall std::list<float [3],class std::allocator<float [3]> >::e
rase(class std::list<float [3],class std::allocator<float [3]> >::iterator)' der Klassenvorlage |
muss ich wircklich dafür ne Struktur erstellen? Oder gibt es ne Möglichkeit das direkt so zu machen? _________________ https://jonathank.de/games/ |
|
Nach oben |
|
|
DirectXer Dark JLI'ler
Anmeldedatum: 05.02.2005 Beiträge: 1201 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 11.03.2005, 19:20 Titel: |
|
|
ich nehm ma an, dass de ne Struktur erstellen musst, da in Lists keine Arrays vorkommen können. Kannst ja einfache ne Strukter mit 3 floats erstellen und die dann benutzen. Wahrscheinlich lässt sichs dann mit nem Iterator einfacher bearbeiten. Der nimmt float[3] als eigenen Typ, denn bei Arrays musste die [] ja hinter den Bezeichner setzten, net hinter den Typ...
Ansonsten kannstes ja ma so versuchen: list<float [3]> -glaub aber auch net dass das klappt; Am besten machste ne Struktur |
|
Nach oben |
|
|
Patrick Dark JLI Master
Anmeldedatum: 25.10.2004 Beiträge: 1895 Wohnort: Düren Medaillen: Keine
|
Verfasst am: 11.03.2005, 19:21 Titel: |
|
|
float[4] ist kein Typ sondern ein Speicherbereich vom Typ float.
CPP: | template<typename T, unsigned int size> class basic_array
{
public:
basic_array (void) : size_ (size), data_ (NULL)
{
if (size_ == 0)
throw "Ungueltige Groesse";
data_ = new T [size_];
}
~basic_array (void)
{
if (data_ != NULL)
{
delete data_;
data_ = NULL;
}
}
T& operator[] (unsigned int id)
{
if (id > size_)
throw "Zu hoher Zugriffswert!";
return (data_[id]);
}
private:
T *data_;
unsigned int size_;
};
typedef basic_array<float, 5> myArray;
::std::list<array> MyListWithArrayInsert; |
Operator [] ist drin, ist auf float mit 5 Einträgen ausgelegt.
- Patrick _________________ 'Wer der Beste sein will muss nach Perfektion streben und jede Gelegenheit nutzen sich zu verbessern.' - KIA
[ German Game Dev | Boardsuche hilft sehr oft | Google rockt | Wie man Fragen richtig stellt | ICQ#: 143040199 ] |
|
Nach oben |
|
|
Jonathan_Klein Living Legend
Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 11.03.2005, 19:46 Titel: |
|
|
jo, ist ne gute Möglichkeit
aber bevor man eine eigene Vectorclass schreib, soltle man doch eher die aus der stl nehmen, oder?
Nun ich bin aber irgendwie ein bisschen zu blöd, eine list zu machen, die vectoren aus floats beinhaltet die alle die feste Größe 3 haben. _________________ https://jonathank.de/games/ |
|
Nach oben |
|
|
DirectXer Dark JLI'ler
Anmeldedatum: 05.02.2005 Beiträge: 1201 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 11.03.2005, 20:04 Titel: |
|
|
vielleicht machste ne Struktur mit en paar float-vectoren... Wieso willste denn, dass alle die Größe drei haben? |
|
Nach oben |
|
|
Jonathan_Klein Living Legend
Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 11.03.2005, 20:10 Titel: |
|
|
naja, ich wollte es halt irgendwie so, das ich nix zusätzliches bruache, also nicht die Klasse von Patrick, oder eine Struktur. Deshalb dachte ich halt an einen Vector. Und es soll erstmal die größe 3 haben, weil damit eine 3dimensionale Position gespeichert wird. _________________ https://jonathank.de/games/ |
|
Nach oben |
|
|
AFE-GmdG JLI MVP
Alter: 45 Anmeldedatum: 19.07.2002 Beiträge: 1374 Wohnort: Irgendwo im Universum... Medaillen: Keine
|
Verfasst am: 14.03.2005, 11:04 Titel: |
|
|
Dann erstell dir ein Struct, mit den 3 Floats und pack dass in deine List... _________________
CPP: | float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<(L)?--_
%6:6:7)+\"World! \\n\",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;} |
|
|
Nach oben |
|
|
Patrick Dark JLI Master
Anmeldedatum: 25.10.2004 Beiträge: 1895 Wohnort: Düren Medaillen: Keine
|
Verfasst am: 14.03.2005, 12:45 Titel: |
|
|
AFE-GmdG hat Folgendes geschrieben: | Dann erstell dir ein Struct, mit den 3 Floats und pack dass in deine List... |
Ach das ist doch nix, nochnichtmal vorausschauend!
Was ist wenn er Lichtberechnungen noch haben will? Soll er dann eine Struct mit 6 floats erstellen? Was wenn er noch Multitexturing haben will? dann sind wir bei 10 floats, wieder ne Struct?
Was wenn er andere Datentypen benutzen will wie z.B. double oder unsigned int?
Besser oben mein Template als den Quellcode mit sinnlosen structs vollbomben _________________ 'Wer der Beste sein will muss nach Perfektion streben und jede Gelegenheit nutzen sich zu verbessern.' - KIA
[ German Game Dev | Boardsuche hilft sehr oft | Google rockt | Wie man Fragen richtig stellt | ICQ#: 143040199 ] |
|
Nach oben |
|
|
Jonathan_Klein Living Legend
Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 14.03.2005, 13:16 Titel: |
|
|
ich habs nun anders, indem ich einfach mehrere Vectoren genommen habe. Einen für Positiontn, einen für Normvecs usw.
Das funktioniert jetzt eigneltihc ziemlich gut. _________________ https://jonathank.de/games/ |
|
Nach oben |
|
|
|