Мне казалось ты разобрался http://blender-3d.ru/forum/index.php/topic,1239.0.htmlА! То был С без ++?
... можешь хранить в массиве как тип "объект" извлекать как "объект", но сделать у класса "объект" наследуемую функцию get_type , которая возвращает у каждого потомка свой код ("меш", "кривая") ...... и далее делать приведение типа к нужному классу в зависимости от значения этой функции ...
// .hclass BlenderScene{ public: std::map<std::string,BlenderObject*> objects; BlenderScene(); ~BlenderScene(); void addObject(std::string name,BlenderMesh* mesh);};class BlenderObject{ public: int Type; BlenderObject(); ~BlenderObject();};class BlenderMesh : public BlenderObject{ public: std::string name; BlenderMesh(); ~BlenderMesh();};// .cppBlenderScene::BlenderScene(){}BlenderScene::~BlenderScene(){}BlenderScene::BlenderObject(){}BlenderScene::~BlenderObject(){}BlenderScene::BlenderMesh(){}BlenderScene::~BlenderMesh(){}void BlenderScene::addObject(std::string name,BlenderMesh* mesh){ objects.insert ( pair<std::string,BlenderMesh*>(name,mesh) );}
... этот код не демонстрирует твоей проблемы и не решает её ...... почему добавляя объект ты ссылаешься на меш? ...
BlenderObject *mesh = new BlenderMesh();
Класс "объект", его потомки: "меш", "кривая". Меши и кривые нужно вогнать в один массив, что ни так страшно, как потом их оттуда извлечь.
Например, такКодBlenderObject *mesh = new BlenderMesh();