C++软件架构和设计

bac*_*aci 1 c++ architecture oop object-oriented-analysis

在我的C++程序中,我想创建一个具有宽度,高度,区域等属性的对象.我还想声明使用和更新此属性的方法.

我希望"set"和"get"这些方法以某种方式列在名为WidthManipulator的头文件,名称空间或子类(无论如何是可能的)中.

我想以这种方式创建我的结构的原因是我想使用"get"名称作为另一个类的另一个方法,比如HeightManipulator.

但对于嵌套类,我得到了Rectangle :: WidthManipulator :: Get()的"非静态成员函数非法调用"错误.我也不想创建Manipulator对象,因为这些类没有属性,只是使用和更新父属性的方法......还有一件事,我想使用void返回,这是我自己的一个很好的理由.

class Rectangle{
public:
int width,height;
int area;
int widthreturned;

    class WidthManipulator{
    public:
    void Set(int x){width = x;} 
    void Get(){widthreturned = width};
    };
};
Run Code Online (Sandbox Code Playgroud)

我该如何处理我的问题?我的结构应该是什么?

Bal*_*Pal 5

C++中的内部类与Pascal中的内部类不同.它只是在外部类的"命名空间"中变得苍白,但没有其他东西被改变.它只看到自己的成员,而实例与外部成员无关.

如果你想要这个关系,你必须以某种方式传递一个外部实例,比如在构造函数中.然后,您可以通过该指针或引用访问成员.