在C++中两次继承同一个类(故意)

Mah*_*ati 2 c++ oop inheritance multiple-inheritance

我有Circle班级和Rectangle班级.我现在想要创建一个类FunnyObject,每个类由一个圆和两个矩形组成.

如果我这样做:

class FunnyObject:public Circle, public Rectangle, public Rectangle{
//How do I refer to each of the Rectangle classes?

}
Run Code Online (Sandbox Code Playgroud)

我如何引用Rectangle类中的函数和变量,因为存在歧义?

此外,通常构造函数是:

FunnyObject::FunnyObject:Circle(arguments), Rectangle(arguments){
//....
}
Run Code Online (Sandbox Code Playgroud)

构造函数如何看待我的情况?

R S*_*ahu 8

我有一个Circle类和一个Rectangle类.我现在想制作一个类FunnyObject,每个由一个圆和两个矩形组成.

使用对象组合而不是继承.

class FunnyObject
{
    Circle circle;
    Rectangle rectangle1;
    Rectangle rectangle2;
}
Run Code Online (Sandbox Code Playgroud)


sco*_*001 7

帮助继承的一个简单技巧是考虑" 是一个 "与" 有一个 ".

如果您有" "关系,则使用继承.如果您有" "关系,则创建一个新的数据成员.

FunnyObject一个矩形和一个圆?如果是这样,继承.

FunnyObject 两个矩形和圆形吗?如果是,请创建成员变量.


Har*_*oon 5

在这种情况下你不需要继承,使用组合:

class FunnyObject
{
    Circle myCircle;
    Rectangle myRectangle1;
    Rectangle myRectangle2;
}
Run Code Online (Sandbox Code Playgroud)