История изменений
Исправление 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 расширяющий ее список с произвольными данными.
Эта фигня пишется на паскале, вообще без всякой сишной шаблонной магии. :)