Массив переменной длины
От: enji  
Дата: 30.11.11 05:07
Оценка:
struct Data 
{
  int a;
  int b;
  std::string c;
};

struct Base
{
  int sz;  
  Data d[1];
};

void doSomething(Base *b)
{
  for (int i = 0; i < b.sz; ++i)
  {
    std::cout << b->d[i].a << b->d[i].s << '\n';  /// *************
  }
}

struct Der11
{
  Base b;
  Data d[10];
};

void func()
{
  Der10 d;
  d.sz = 11;
  doSomething(&d.b);
}


Можно ли по стандарту так делать? А если Data будет POD? Должна ли Base быть POD? A Der11? А если в Base будет еще какой-нить double — не будет ли проблем с выравниванием?

Спасибо!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.