1

MotorDefinition クラスと Motor という抽象クラスがあります。

class MotorDefinition {
public:
    MotorDefinition(int p1, int p2, int p3) : pin1(p1), pin2(p2), pin3(p3) {}
    int pin1 = -1;
    int pin2 = -1;
    int pin3 = -1;
};
class Motor {
public:
     Motor(MotorDefinition d) : definition(d) {}
     virtual void forward(int speed) const = 0;
     virtual void backward(int speed) const = 0;
     virtual void stop() const = 0;
protected:
    MotorDefinition definition;
};

私の Zumo 車には 2 つのモーターがあります。

class MotorTypeZumoLeft : public Motor {
    MotorTypeZumoLeft(MotorDefinition def) : Motor(def) {}
    void Motor::forward(int speed) const {}
    void Motor::backward(int speed) const {}
    void Motor::stop() const {}
};

class MotorTypeZumoRight : public Motor {
    MotorTypeZumoRight(MotorDefinition def) : Motor(def) {}
    void Motor::forward(int speed) const {}
    void Motor::backward(int speed) const {}
    void Motor::stop() const {};
};

class MotorTypeZumo {
public:
     MotorTypeZumo(MotorTypeZumoLeft *l, MotorTypeZumoRight *r) : left(l), right(r) {}

protected:
    MotorTypeZumoLeft *left;
    MotorTypeZumoRight *right;

};

残念ながら(私にとって)、これはコンパイルされません:

MotorDefinition lmd(1, 2, 3);
MotorTypeZumoLeft *leftMotor(lmd);
MotorDefinition rmd(4, 5, 6);
MotorTypeZumoRight *rightMotor(rmd);
MotorTypeZumo motors(*leftMotor, *rightMotor);

基本的な概念がいくつか欠けていると思いますし、確かにいくつかの構文を台無しにしています。これを正しく定義するのを手伝ってくれませんか。

4

1 に答える 1