[C++] Pointerproblem in struct/map

EdWood1

Grünschnabel
hallo,

folgendes:
Code:
struct FileAsset {
	std::string filename;
	Asset *myAsset;		//Asset ist ein Objekt einer Library
}
typedef <int, FileAsset *> ImgMap;
ImgMap map;

Asset *assetNeu[10];

int main() {
	FileAsset *fileAsset;
	fileAsset->myAsset = assetNeu[0];	// segmentation fault
	fileAsset->filename = "test";
	map[0] = fileAsset;
	return 0;
}
wie macht man so eine Zuweisung wie in zeile 2 im main? ich will hier das Objekt asset2[0] in die map kopieren, d.h. ich will von einer anderen funktion die map durchlaufen und auf die elemente von FileAsset zugreifen. Ist also sehr wahrscheinlich ein Pointerproblem und ich bekomme jedesmal bei der Zuweisung im main ein segmentation fault.
So, hoffe das war verständlich.
 
hallo,

folgendes:
Code:
struct FileAsset {
	std::string filename;
	Asset *myAsset;		//Asset ist ein Objekt einer Library
}
typedef <int, FileAsset *> ImgMap;
ImgMap map;

Asset *assetNeu[10];

int main() {
	FileAsset *fileAsset;
	fileAsset->myAsset = assetNeu[0];	// segmentation fault
	fileAsset->filename = "test";
	map[0] = fileAsset;
	return 0;
}
wie macht man so eine Zuweisung wie in zeile 2 im main? ich will hier das Objekt asset2[0] in die map kopieren, d.h. ich will von einer anderen funktion die map durchlaufen und auf die elemente von FileAsset zugreifen. Ist also sehr wahrscheinlich ein Pointerproblem und ich bekomme jedesmal bei der Zuweisung im main ein segmentation fault.
Ja, das ist auch völlig OK wenn man versucht ungültige Zeiger zu verwenden.

Du mußt doch erstmal die Zeiger initialisieren, das sie auch auf gültige Objekte zeigen:
C++:
FileAsset* fileAsset = new FileAsset();
assetNeu[0] = new FileAsset();
Gruß

PS: Und nicht vergessen die Objekte auch wieder mit delete freizugeben!
 
Zurück