Я часами почесываю голову, пытаясь понять, почему это рушится.Проблемы с указателями?
Это то, что он в принципе делает.
У меня есть компонент gui под названием Table. Мне нужно 1000 таблиц. Не больше, не меньше. Таблица наследует от Widget и DynamicElement одновременно. Мне нужно иметь возможность передавать адрес компонента (указатель, а не копию), поэтому мне нужно, чтобы они не перемещались.
Первая попытка, с которой я работал. Я использовал вектор таблицы *, и каждая из таблиц была отдельно выделена в куче. Этот метод немного медленный и рискует фрагментировать кучу ни для чего, потому что мне нужно ровно 1000.
Следующее решение, которое я разработал для родительского класса, имеет таблицу m_tables [1000].
Я не вижу причин, почему это не должно работать, но когда я делаю это так, он падает. На самом деле, в любое время, кажется, я пытаюсь сделать что-то с участием & m_tables [x] что-то пошло не так.
Он падает с ошибкой 0xccccccccc когда-либо пытается получить доступ к указателю, полученному путем выполнения & m_tables [i].
Есть ли что-то, что я не понимаю?
Вот как я создаю таблицу:
void LobbyTableManager::createTable(int tableId)
{
m_tables[tableId] = LobbyTable(m_fontMan,m_spriteMan,tableId);
LobbyTable* t = &m_tables[tableId];
t->addChairActionListeners(this);
t->addMouseListener(this);
t->addChairMouseListeners(this);
t->getTable()->addMouseListener(this);
t->rescale(1.0f);
m_activeTables.push_back(t);
//rescaleTables();
m_flow->add(t);
resizeFlow();
updateScrollBars();
}
добавить таблицу в макет потока и второй пытается использовать его он выходит из строя.
Я пробовал использовать std-список, который теоретически должен был бы дать тот же результат, что и моя первая попытка, но также и сбой.
Благодаря
Вы называете конструктор в этой строке 'LobbyTable (m_fontMan, m_spriteMan, TABLEID)'? Если у вас есть tableId, это не значит, что таблица уже создана? –
Он был создан с использованием бесполезного конструктора по умолчанию. – jmasterx
Не следует ли обращаться к конструктору с вызовом ключевого слова 'new'? –