Есть ли лучший способ инициализировать структуры C в коде на C++?Инициализация структур C в коде C++
Я могу использовать списки инициализации в точке объявления переменных; однако это не так полезно, если все аргументы неизвестны во время компиляции или если я не объявляю локальный/глобальный экземпляр, например:
Код Legacy C, который объявляет структуру, а также использует API это
typedef struct
{
int x, y, z;
} MyStruct;
C++ код с использованием библиотеки C
void doSomething(std::vector<MyStruct> &items)
{
items.push_back(MyStruct(5,rand()%100,items.size()));//doesn't work because there is no such constructor
items.push_back({5,rand()%100,items.size()});//not allowed either
//works, but much more to write...
MyStruct v;
v.x = 5;
v.y = rand()%100;
v.z = items.size();
items.push_back(v);
}
Создание локальных экземпляров, а затем установка каждого члена по одному (myStruct.x = 5;
и т.д.) реальная боль, и довольно трудно читать при попытке добавить в контейнер 20 разных предметов ...
Вы ищете решение на C или C++? – Christoph