Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/138.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在基于继承的系统中添加过滤输出的机制_C++ - Fatal编程技术网

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

C++ 在基于继承的系统中添加过滤输出的机制,c++,C++,我的问题是关于如何在面向对象的解决方案中做到这一点。 我以前在C语言中工作,现在我发现思考对象有一些困难,我的解决方案是C风格的。 问题是: 我们有一个a班,还有许多B、C、D、E班的孩子。。。。 这些子类中的每一个都会计算许多值(一个类可以计算5个值,其他10个值……) 需要的是为用户添加一个机制,只要求用户需要的值,例如,B类计算10个值,用户只能要求3个值。 这个解决方案必须推广到所有的孩子身上 我提出的解决方案是c风格的。 在类A中添加int x和指向字符串数组的指针 在每个子类中定义由

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

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

我提出的解决方案是c风格的。 在类A中添加int x和指向字符串数组的指针 在每个子类中定义由该类计算的值的枚举。
在子类构造函数中,我们通过x |=(1更新x,您可以在父类中定义一个虚拟成员函数。“数组下标运算符”似乎适用于获取存储值:

A {
    virtual const T& operator[](std::size_t index) const = 0;
};
然后,用户可以根据需要精确地要求任意多的值,孩子们可以以适合他们每个人的方式实现函数

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

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


但是,根据描述,我认为根本不需要面向对象的解决方案。纯函数方法可能更简单。你可以有函数
B
C
D
E
,…它们返回一个值向量。

你的问题太广泛了,你要求我们重新检查你的算法而不是解决一个特定的问题。有没有一个特定的问题你正在试图解决?是的,我只是引用了需求,我谈论了我提出的解决方案,只是为了解释更多的需求,问题是关于“如何最好地解决这个问题。我的解决方案似乎是C stype(我从不首先考虑类、tmplates、stl)谢谢你的回答。但是如果我很了解你的解决方案,用户需要B[3],这意味着他只需要三个值,但需要哪些值?用户必须指定他需要哪些值,这就是为什么我考虑导出enum,所以他会有一个列表,选择他喜欢的,并且实际会执行必要的操作,
B[3]将意味着用户需要4个值,它们将具体地使用从0到3的值。但是如果需要从名称到值的映射,那么数组可能不理想。问题中没有足够的信息来确定这样的映射是什么好的设计。类
B
中的code>z
表示与
C
中的value
z
相同的东西。为什么存在类层次结构?A用于什么?