Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/154.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++_Class_Inheritance - Fatal编程技术网

C++ 类派生设计

C++ 类派生设计,c++,class,inheritance,C++,Class,Inheritance,这是我设计的照片。对不起,我说得不太清楚 在A类中发现的是通用的。 类B、C、D、E、F包含其他自定义函数。 通过使用这种类型的类组合,我可以解决8个问题 以排列问题为例。是第一个,称为G。从B、C和E中获取信息,并将它们组合起来,以便解决问题 问题是…我不知道如何组合它们 这是包含函数的表。 对不起,我的白板。它很旧了,而且我没有其他的纸张 谢谢。看来你和我正忙于几乎相同类型的继承结构。我基本上是这样做的。将贯穿继承的函数定义为它们所在的所有类的私有函数。然后在调用它们时,您可以执行以下操

这是我设计的照片。对不起,我说得不太清楚

在A类中发现的是通用的。 类B、C、D、E、F包含其他自定义函数。 通过使用这种类型的类组合,我可以解决8个问题

以排列问题为例。是第一个,称为G。从B、C和E中获取信息,并将它们组合起来,以便解决问题

问题是…我不知道如何组合它们

这是包含函数的表。

对不起,我的白板。它很旧了,而且我没有其他的纸张


谢谢。

看来你和我正忙于几乎相同类型的继承结构。我基本上是这样做的。将贯穿继承的函数定义为它们所在的所有类的私有函数。然后在调用它们时,您可以执行以下操作:

A.h

A.cpp

B.cpp

#包括“B.h”
void B::example()常量
{

“拥有一个好的界面”是什么意思?
D
已经继承了
B
C
的界面。一颗可怕的钻石。你真的需要继承来解决你的问题吗?有些代码会很感激的。(注意,甚至还有一个标签,尽管我不确定它是否适用于这里。)接口的最终用户永远不应该是同一接口的子类!客户端代码应该通过可能的最高级别接口使用这些类。我有一个问题。我必须在一个程序中解决所有这些问题:1.排列2.排列3.组合4.笛卡尔5.具有自然数的分区6.具有集合的分区7.带满射集的分区8.Queens问题所有问题都应使用回溯方法完成。我发现它们之间有相似之处。我想要一个包含函数的类,我可以在任何问题中使用它们。然后是包含一些预定义函数的派生类,以包含问题所需的所有内容,然后是8使用该类解决问题的派生类。@RobertEagle-是否强制使用类层次结构(表示对象)在算法的函数库中?您可能会发现重用代码很有用,但这并不一定意味着您必须编写类。只需在适当的命名空间中将算法作为自由函数编写即可。您可能希望某些类表示您需要的结构(例如,CarthesianPoint继承自Point)但一般来说,它们应该只实现这些对象的功能(例如“toPolar()”)。代码示例和类的名称会有所帮助。你能更明确一点吗?我想我明白了,但我仍然感到困惑。@RobertEagle我编辑了我的示例,以生动地说明我的意思,我仔细检查了一下,以确保它能正常工作。@RobertEagle我编辑了我的示例(确实如此)。很幸运。我完全理解了。正如Dennis在另一篇帖子上作为评论指出的那样,看起来类方式可能不是最佳的解决方案。我认为最佳的解决方案就像使用重叠的名称空间。它是有效的,但类不知何故是幽灵般的,你明白了吗?无论如何,我将构建这两个解决方案。
class A
{ private:
   int z;
public:
 ...constructors and destructors for A...
void print() const;
};
#include "A.h"
void A::print() const
{
   cout << "This class contains an int with value " << z << endl;
}
#include "A.h"
class B : public A
{
private:
   int i;
public:
...constructors and destructors...
void print() const;
};
#include "B.h"

void B::example() const
{
    cout << "This class contains ant with value: " << i << endl;
    A::print();
}