LINUX.ORG.RU

История изменений

Исправление alysnix, (текущая версия) :

Во-вторых, есть подозрение, что вот такие вот задачки, которые средней руки программистами, слабо знающими современный C++, решаются с трудом, будут этими же программистами решаться гораздо проще.

посмотрел. это пять. это как «множественное наследование не нужно». Это типичный пример неверного проектирования данных.

Если вам так хочется структуру в которой есть необязательные поля большого размера, вы делаете структуру только из обязательных полей, и делаете указатель на extension.

struct Data {
  int _x; ///обязательные поля
  int _y;
  Extension* _ext = nullptr; ///расширение данных если надо
}

struct Extension {
  vector<int> _optional;
  Extension* _next = nullptr; ///можно прицеплять дополнительные расширения.
}

в данном случае вы можете прицеплять к Data расширяющий ее список с произвольными данными.

Эта фигня пишется на паскале, вообще без всякой плюсишной шаблонной магии. :)

Исходная версия alysnix, :

Во-вторых, есть подозрение, что вот такие вот задачки, которые средней руки программистами, слабо знающими современный C++, решаются с трудом, будут этими же программистами решаться гораздо проще.

посмотрел. это пять. это как «множественное наследование не нужно». Это типичный пример неверного проектирования данных.

Если вам так хочется структуру в которой есть необязательные поля большого размера, вы делаете структуру только из обязательных полей, и делаете указатель на extension.

struct Data {
  int _x; ///обязательные поля
  int _y;
  Extension* _ext = nullptr; ///расширение данных если надо
}

struct Extension {
  vector<int> _optional;
  Extension* _next = nullptr; ///можно прицеплять дополнительные расширения.
}

в данном случае вы можете прицеплять к Data расширяющий ее список с произвольными данными.

Эта фигня пишется на паскале, вообще без всякой сишной шаблонной магии. :)