使用级别访问权限的c ++类组织

时间:2018-06-25 13:17:56

标签: c++ class organization multi-level

我是C ++的新手。我有一个项目要为我的机器人创建一个库。基本上,主要类别是ROBOT,然后第二层是:LIGHT,MOTOR。然后,对于LIGHT级别,有以下方法:Set_ON_OFF,Set_color,Set_brightness。对于MOTOR级别,有以下方法:Set_right_left,Set_power,Set_move_back。因此,多层次类ROBOT的组织方式如下:

机器人

    • Set_ON_OFF
    • Set_color
    • Set_brightness
  1. 电机
    • Set_right_left
    • Set_power
    • Set_move_back

在主程序中,我想调用类似的方法:

ROBOT obj_robot;

obj_robot.LIGHT.Set_ON_OFF = 1;
obj_robot.LIGHT.Set_color= 135;
obj_robot.LIGHT.Set_brightness= 75;

obj_robot.MOTOR.Set_right_left= 0;
obj_robot.MOTOR.Set_power= 85;
obj_robot.MOTOR.Set_move_back= 1;

我如何实现这样的班级组织?

谢谢您的帮助。

塞德里克

2 个答案:

答案 0 :(得分:0)

C ++中的方法称为:

obj_robot.MOTOR.Set_power(85);

您应该真正阅读有关C ++的教程。例如:

https://developers.google.com/edu/c++/getting-started https://cal-linux.com/tutorials/getting_started_with_c++.html

答案 1 :(得分:0)

您可以像这样创建组织(c的解决方案很多):

class Light{
public:
    void setOnOff(int on) { m_on = on; }
    void setColor(int color) { m_color = color; }
    void setBrightness(int brightness) {m_brightness = brightness;}
private:
    int m_on;
    int m_color;
    int m_brightness;
};


class Robot {
public:
//  Motor& getMotor() {return m_motor;}
    Light& getLight() {return m_light;}
private:
//  Motor m_motor;
    Light m_light;
};

int main(int argc, char *argv[]) {
    Robot robot;
    robot.getLight().setOnOff(1);
    robot.getLight().setColor(135);
    robot.getLight().setBrightness(75);
};

但是,正如@AlexGarcia所指出的那样,在尝试执行此类操作之前,您应该真正阅读一些教程并创建简单的c ++程序。