>>109754985
>Designated initializers
You can do that in C++. You don't have to use constructors. You can just zero init your struct and then call and init function.
Thing var = { 0 };
var.init();
or if you don't like OOP
Thing var = { 0 };
Thing_Init(&var);
and yes malloc works in C++.