I have a bunch of structures that I need to add to my vectors and give them some default values.
Q: can it be done in a better/simpler way?
EDIT I don't have C++17
// external structs
typedef struct A {
int member1;
float member2;
char *member3;
// ...
} A;
typedef struct B {
double member5;
float member3;
int *member4;
// ...
} B;
typedef struct C {
char* member5;
char* member2;
float *member3;
// ...
} C;
...
template <class T>
void myClass::addStruct(std::vector<T> &vp)
{
void *sp = nullptr;
if(std::is_same<T, A>::value) {
A s{};
s.member1 = 2;
s.member3 = "whatever";
sp = &s;
}
else if(std::is_same<T, B>::value) {
B s{};
s.member4 = nullptr;
s.member3 = 3.1f;
sp = &s;
}
else if(std::is_same<T, C>::value) {
C s{};
s.member2 = "whenever";
sp = &s;
}
/* else if() {
}
else if() {
} ...
*/
if(sp == nullptr) {
// print error
return;
}
vp.push_back(*(reinterpret_cast<T*>(sp)));
}
// usage
addStruct<A>(...);
addStruct<A>(...);
addStruct<B>(...);
addStruct<C>(...);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With