在基于继承的系统中添加过滤输出的机制

adding a mechanism to filter output in a system based on inheritance

本文关键字:系统 添加 过滤 机制 输出 于继承 继承      更新时间:2023-10-16

我的问题是关于在面向对象的解决方案中如何做到这一点。我以前在C语言中工作,现在我发现了一些思考对象的困难,我的解决方案是C风格的。问题是:

我们有一个a班,还有很多孩子B、C、D、E班。。。。这些子类中的每一个都计算多个值(一个类可以计算5个值,另一个可以计算10个值…)需要,是为用户添加一个机制,只要求他需要的值,例如,B类计算10个值,用户只能要求3个。这个解决办法必须推广到所有的孩子身上。

我提出的解决方案是c风格的。在类A中添加一个int x和一个指向字符串数组的指针在每个子类中定义由该类计算的值的枚举。在子类构造函数中,我们通过x|=(1<<tous-les-eenum)更新x,指向字符串数组的指针将具有与枚举相同顺序的字符串(例如enum{monday,tuesday},数组将{"monday","tusday"}。并且我在A类中呈现用于激活/去激活值的函数。

你认为,任何人都可以改进什么,或者提出一个更面向对象的解决方案。

感谢

您可以在父类中定义一个虚拟成员函数。"数组下标运算符"似乎适用于获取存储值:

A {
    virtual const T& operator[](std::size_t index) const = 0;
};

然后,用户可以要求他们需要的值,孩子们可以以适合他们每个人的方式实现该功能。

CCD_ 1当然是存储在对象中的值的类型。根据类型或使用方式,返回副本可能更合适。

如果所有子级都以相同的方式存储值,例如向量,那么将向量放在A中并使成员函数非虚拟会更简单。这样,孩子们只需要用计算结果填充向量。

然而,根据描述,我认为根本不需要面向对象的解决方案。纯粹的功能性方法可能要简单得多。您可以拥有函数BCDE。。。其返回值的向量。