Hallo,
ich möchte mich jetzt mal ein wenig mit (SDL)Threads beschäftigen.
Dazu wollte ich dem Thread folgende Struktur als Parameter übergeben:
map<string,map<int,s_image> >
Am besten ich poste mal nen bissl Code (ohne includes):
|
C Quellcode
|
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
28
29
30
31
32
|
using namespace std;
struct s_image {
string filename;//Filename
Sint16 x; // X-Pos
Sint16 y; // Y-Pos
};
typedef map<string,map<int,s_image> > t_mimage;
string menu = "testmenu"; //global
int HandleImage (void *IMG) {
t_mimage* test = (t_mimage*) IMG;
cout << "\nTestausgabe:" << test[menu][0]->filename << endl;
return 0;
}
int main(void) {
t_mimage IMAGE;
t_mimage* p_IMAGE = &IMAGE;
IMAGE["testmenu"][0].filename = "picture.jpg";
IMAGE["testmenu"][0].x = 10;
IMAGE["testmenu"][0].y = 100;
SDL_Thread *imgthread;
imgthread = SDL_CreateThread (HandleImage, p_IMAGE);
SDL_KillThread(imgthread);
return 0;
}
|
Aber das ganze wird nicht compiliert, sondern wird abgebrochen mit:
error: no match for ‘operator[]’ in ‘test[menu]’
Ich weiß das der Fehler im Zugriff auf das Object in der Threadfunktion liegt. Funktioniert das ganze nur nicht, weil an die Funktionen der Zeiger übergeben wird?
Vielleicht kann ja einer mal einen Denkanstoß geben

Danke.
Thomas