C++:从基类实例构造子类?

Nic*_*ner 1 c++ struct

我有三个结构,其中一个继承自另外两个结构:

typedef struct _abc
{
    int A;
    int B; 
    int C;
} ABC;

typedef struct _def
{
    int D;
    int E;
    int F;
} DEF;

typedef struct _abcdef : ABC, DEF { } ABCDEF;
Run Code Online (Sandbox Code Playgroud)

(我希望第三个结构包含前两个的所有成员.有更好的方法吗?)

现在,我已经完全填充了ABC和的实例DEF,并且我想创建一个新ABCDEF实例:

int main()
{
    ABC abc;
    abc.B = 2;
    abc.C = 1;
    abc.A = 10;

    DEF def;
    def.D = 32;
    def.E = 31;
    def.F = 90;

    // make a new ABCDEF with all the values of abc and def
}
Run Code Online (Sandbox Code Playgroud)

什么是创建的最佳方式ABCDEF?我能做到这一点,但它有点糟糕:

ABCDEF abcdef;
abcdef.A = abc.A;
abcdef.B = abc.B;
abcdef.C = abc.C;
abcdef.D = def.D;
abcdef.E = def.E;
abcdef.F = def.F;
Run Code Online (Sandbox Code Playgroud)

上面的内容与结构的成员相关联,如果添加了许多成员,则会很混乱.

sbi*_*sbi 8

这是C++.那些typedef是不需要的.你有建设者:

struct abc {
    int A;
    int B; 
    int C;
    abc(int a, int b, int c) : A(a), B(b), C(c) {}
};

struct def {
    int D;
    int E;
    int F;
    def(int d, int e, int f) : D(d), E(e), F(f) {}
};

struct abcdef : abc, def {
  abcdef(const abc& a, const def& d) : abc(a), def(d) {}
};

int main()
{
   abc a(2,1,10);
   def d(32,31,90);
   abcdef ad(a,d);

   return 0;
}
Run Code Online (Sandbox Code Playgroud)