struct Base
{
int x;
int foo() const
{
return x;
}
};
struct Derived : Base
{
int y;
int foo() const
{
return Base::foo() + y;
}
};
int main(int argc, char **argv) {
Derived d;
d.x = 1;
d.y = 2;
const Base& b = d;
std::cout << b.foo() << std::endl;
std::cout << d.foo() << std::endl;
return 0;
}
我有这个设计问题。两个简单的结构,用于包装一些成员,这些成员可以直接在代码的某些部分访问(基数比成员更多)。基类中有一个函数将这些成员聚合在一起。派生类定义了更多成员,函数将这些成员聚合到基础聚合的结果中。聚合函数在一个大循环中调用,因此不需要虚函数并且创建main中显示的问题,当调用foo时,相同的对象行为不同(因为在相同的对象库和派生版本上调用不同的函数) 。我已经考虑了一些替代方法,比如使用私有继承,如果成员不是直接访问代码,那么这些替代方法是合适的。是否有其他替代方案来解决这个问题,是否存在其他问题隐藏其他上述问题?