我正在编写一个非常简单的Arduino类来控制两个电机。

我的头文件Motor.h中有一个简单的类定义:

class Motor
{
  public:
    Motor();
    void left(int speed);
    void right(int speed);
    void setupRight(int rightSpeed_pin, int rightDirection_pin);
    void setupLeft(int leftSpeed_pin, int leftDirection_pin);
  private:
    int _rightMotorSpeedPin;
    int _rightMotorDirectionPin;
    int _leftMotorSpeedPin;
    int _leftMotorDirectionPin;
};

在我的主库文件Motor.cpp中,我具有以下Class构造函数:
Motor::Motor() {
  // Intentionally do nothing.
}

当我尝试使用以下行在主程序中初始化类时:
Motor motor();

我收到以下编译错误:
MotorClassExample.ino: In function 'void setup()':
MotorClassExample:7: error: request for member 'setupRight' in 'motor', which is of non-class type 'Motor()'
MotorClassExample:8: error: request for member 'setupLeft' in 'motor', which is of non-class type 'Motor()'
request for member 'setupRight' in 'motor', which is of non-class type 'Motor()'

令人困惑的部分是,即使我什至包括一个垃圾,也要像这样向Motor Class构造函数扔掉一个参数:
class Motor
{
   public:
      Motor(int garbage);
      ...

在.cpp文件中:
Motor::Motor(int garbage) { }

在我的主文件中:
Motor motor(1);

一切正常,没有任何提示。我已经在Arduino论坛中进行了很多搜索,但没有发现任何可以解释这种奇怪行为的东西。为什么类构造函数需要一个参数?这是与AVR相关联的怪异遗物吗?

最佳答案

您遇到了“最令人头疼的解析”问题(之所以这样命名,是因为它很烦人)。
Motor motor();声明一个名为motor的函数,该函数不带任何参数并返回Motor。 (与int test();或类似代码没有区别)

要定义名为Motormotor实例,请使用不带括号的Motor motor;

关于c++ - 为什么我的Arduino类构造函数需要一个参数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34170160/

10-10 20:32