初始化二维对象数组的最合适方法是什么?

时间:2010-06-23 20:06:10

标签: c++ c initialization

我需要一个动态分配的二维对象数组。

我声明了一个指向对象指针的静态指针,如下所示:

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 个答案:

答案 0 :(得分:3)

任何不使用

的理由
Vector<Vector<server_session> >

让它为你做动态分配和管理?

答案 1 :(得分:1)

如果你真的想要一个数组而不是一个向量,请使用std :: tr1 :: array(或std :: array或boost :: array,都是一样的)。