Скорее всего, можно объединить объекты под одной логикой, т.е. создать указатель на базовый класс Base* и хранить матрицу таких указателей, а дальше работать со всеми объектами через их общие методы (по-простому так).
std::vector <std::vector <Base*>> matrix(n, std::vector <Base*>(m));
for(size_t i = 0; i < n; ++i)
for(size_t j = 0; j < m; ++j)
matrix[i][j]->doSmth();