use*_*126 2 c++ factory visual-c++
我有一堆结构需要添加到我的矢量并给它们一些默认值.
问:可以用更好/更简单的方式完成吗?
编辑我没有C++ 17
//外部结构
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>(...);