Каков наиболее подходящий способ инициализации двумерного массива объектов? - PullRequest
2 голосов
/ 24 июня 2010

Мне нужен динамически размещаемый двумерный массив объектов.

Я объявил статический указатель на указатель на объект следующим образом:

server_session **server_session::Pglvcl_sess;

Существует метод для динамического заполнения массивамассива объекта:

int server_session::createSession()
{
  int ret = -1;
  // looks for the next available position on the array
  for (int i = 0; i <= MAX_SESSION; i++)
  {
    // if there's an available position, instantiates an object
    if (server_session::Pglvcl_sess[i] == NULL)
    {
      // instantiates object
      server_session::Pglvcl_sess[i] = new server_session();
      ret = i;
      break;
    }
  }
  return ret;
}

Должен ли я malloc server_session::Pglvcl_sess переменная?

Как правильно ее инициализировать?

РЕДАКТИРОВАТЬ:

Приложение выполняет этот метод при запуске, это нормально?

void server_session::initializeSessions()
{
  server_session::Pglvcl_sess = ( server_session * * )   malloc(MAX_SESSION * sizeof(server_session));
  for (int i = 0; i <= MAX_SESSION; i++)
  {
    if (server_session::Pglvcl_sess[i] != NULL)
    {
      server_session::Pglvcl_sess[i] = NULL;
    }
  }
}

Ответы [ 2 ]

3 голосов
/ 24 июня 2010

Есть ли причина не использовать

Vector<Vector<server_session> >

и позволить ему выполнять динамическое распределение и управление для вас?

1 голос
/ 24 июня 2010

Если вам действительно нужен массив вместо вектора, используйте std :: tr1 :: array (или std :: array или boost :: array, все равно).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...