Я часами чесал голову, пытаясь понять, почему это происходит.
Это то, что он в основном делает.
У меня есть компонент графического интерфейса под названием Table. Мне нужно 1000 столов. Не больше, не меньше. Таблица наследуется от Widget и DynamicElement одновременно. Мне нужно иметь возможность передавать адрес компонента (указатель, а не копия), поэтому мне нужно, чтобы они не двигались.
Первая попытка, которую я сделал, сработала. Я использовал вектор таблицы *, и каждая из таблиц была выделена в куче отдельно. Этот метод немного медленный и рискует фрагментировать кучу даром, потому что мне нужно ровно 1000.
Следующее решение, которое я придумал, заключается в том, чтобы родительский класс имел Table 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();
}
Я добавляю таблицу в макет потока, и в тот момент, когда она пытается ее использовать, она вылетает.
Я пытался использовать стандартный список, который теоретически должен давать тот же результат, что и моя первая попытка, но он тоже дает сбой.
Спасибо