Показать сообщение отдельно
Старый 15.11.2013, 15:55   #1
St_AnGer
Элита
 
Аватар для St_AnGer
 
Регистрация: 21.01.2010
Адрес: Россия, Рязанская область, г.Михайлов
Сообщений: 2,067
Написано 1,185 полезных сообщений
(для 2,828 пользователей)
Проблема с указателями

Доброго времени суток, Булчане!
Мне просто по-зарез нужна ваша помощь. Конечно, для гуру мой вопрос покажется банальным (наверно), но я не могу его решить. Вообщем вот что имею:

Классы cGeom и cGeomManager содержащий функцию и вектор:
class cGeom
{
...
}

class cGeomManager
{
...
    vector<cGeom> geoms;
    cGeom *createGeom();
...
}


cGeom *cGeomManager::createGeom()
{	
    this->geoms.push_back( cGeom() );
    return &this->geoms.back();
}
ну и далее это дело использую слудеющим образом:
cGeomManager* geom = new cGeomManager;
cGeom *geom1 = geom->createGeom();
cGeom *geom2 = geom->createGeom();
cGeom *geom3 = geom->createGeom();
И вот тут проблема. Когда я создаю первый объект(geom1) им можно управлять как угодно (т.е. использовать все функции и переменные этого объекта и т.д.). Но когда создаётся второй и последующие объекты - к созданным ранее доступ теряется(создался geom2 - geom1 больше для меня недоступен). Головой понимаю что наверное что-то происходит с указателем, а чего происходит и как это решить - не пойму.

Уже прочитал все ссылки в гугле по вопросам указателей - ответа не нашёл. Потому прошу помощи у знающих. И не пинайте за говнокод, пожалуйста

зыЖ пробовал делать массив указателей в классе cGeomManager (ну т.е. vector<cGeom*>), но становилось ещё хуже, потому что я банально не понимаю как тогда по этому массиву пробежаться в цикле.
__________________
Main PC:
Intel Core i5 4260U 1.44 GHz + LPDDR3 1x4096 1600 MHz + Intel HD Graphics 5000.

Asus Ёжик T101-MT:
Intel Atom N-570 1.66 Ghz + DDR2 2x1024 800 Mhz + Intel GMA 3150 128 Mb DDR2


Скачать Doom 2D: Remake v0.3.8a
(Offline)
 
Ответить с цитированием