【发布时间】:2017-09-01 21:17:53
【问题描述】:
class B_mem {
public:
int b_var;
};
class D_mem : public B_mem {
public:
int d_var;
};
class B {
public:
B_mem b_member;
};
class D : public B {
public:
D_mem d_member;
};
int main () {
D derived;
D_mem dmem;
dmem.b_var = 2;
dmem.d_var = 3;
B* b_ptr = &derived;
std::cout << b_ptr->b_member.b_var; // Doesn't print 2
}
如何构建类,以便在设置/更新 D_mem 时,它会自动设置/更新 B_mem(如果相关)?在上面的示例中,我创建了 D 并填充了 D_mem,然后使用 B 类型的指针访问 D。我希望能够通过 B_mem 访问 D 中 D_mem 的基类成员。
我想知道是否有一些具有多态性、复制构造函数或集合函数的东西可以让我做到这一点,而无需手动保持 D_mem 和 B_mem 一致。
【问题讨论】:
-
dmem和derived.d_member是不同的对象。 -
啊,是的!我的意思是在定义
dmem之后添加derived.d_member = dmem。即使修复了,您仍然会遇到同样的问题。
标签: c++ inheritance polymorphism copy-constructor move-constructor