Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/143.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arduino oop错误 我学习如何用C++来编程,并且运行到一个我无法理解的错误。_C++_Oop_Arduino - Fatal编程技术网

Arduino oop错误 我学习如何用C++来编程,并且运行到一个我无法理解的错误。

Arduino oop错误 我学习如何用C++来编程,并且运行到一个我无法理解的错误。,c++,oop,arduino,C++,Oop,Arduino,这是我的密码 class ledControler { public: void ledOn(); void ledOff(); void ledStrobe(); void ledFade(); ledControler(int); private: int pinNumber = 0; }; ledControler::ledControler(int pin) { pinNumber = pin; pinMode(pin

这是我的密码

class ledControler 
{
  public:
    void ledOn();
    void ledOff();
    void ledStrobe();
    void ledFade();
    ledControler(int);

  private:
    int pinNumber = 0;
};

ledControler::ledControler(int pin)
{
  pinNumber = pin;
  pinMode(pinNumber, OUTPUT);
  ledOn();{
    digitalWrite(pinNumber, HIGH);
  }
  ledOff ();{
    digitalWrite(pinNumber, LOW);
  }
  ledStrobe(int time);{
    digitalWrite(pinNumber, HIGH);
    delay(time);
    digitalWrite(pinNumber, LOW);
    delay(time);
  }
}
以下是错误:

Object_oriented_LED.ino: In constructor 'ledControler::ledControler(int)':
Object_oriented_LED.ino:24:13: error: expected primary-expression before 'int'
Object_oriented_LED.ino:26:11: error: 'time' was not declared in this scope
Error compiling.

您有一些方法显然是在构造函数中创建的,这是不正确的。每种方法都应该有自己的方法,例如:

void ledControler::ledOn() {
    digitalWrite(pinNumber, HIGH);
}
考虑构造函数中的代码片段:

ledOn();{
    digitalWrite(pinNumber, HIGH);
}
这实际上被视为对函数
ledOn
的调用,后面是一个包含
digitalWrite
调用的块,这两个调用都是完全有效的(除了没有定义
ledOn
函数之外,当然,如果您能够克服编译错误,您在链接时肯定会发现这一点)

阻止此操作的特定编译错误是您尝试的定义:

ledStrobe(int time);{ ...
如上所述,这实际上更多的是对
ledStrobe
的调用,不幸的是,这不是一个有效的调用,因为您不应该在调用中提供数据类型(通常是
ledStrobe(time);

这就是第一个错误的来源。第二个原因是,由于您没有实际定义接收
time
参数的函数,因此使用它的代码抱怨它不存在

正确定义方法应该可以解决这两个问题,这可以通过以下方法实现:

class ledControler {
    public:
        void ledOn();
        void ledOff();
        void ledStrobe();
        void ledFade();
        ledControler(int);
    private:
        int pinNumber = 0;
};

ledControler::ledControler(int pin) {
    pinNumber = pin;
    pinMode(pinNumber, OUTPUT);
}

void ledControler::ledOn() {
    digitalWrite(pinNumber, HIGH);
}

void ledControler::ledOff () {
    digitalWrite(pinNumber, LOW);
}

void ledControler::ledStrobe(int time) {
    digitalWrite(pinNumber, HIGH);
    delay(time);
    digitalWrite(pinNumber, LOW);
    delay(time);
}

您的方法显然是在构造函数中创建的,这是不正确的。每个方法都应该是自己的方法,例如:

void ledControler::ledOn() {
    digitalWrite(pinNumber, HIGH);
}
考虑构造函数中的代码片段:

ledOn();{
    digitalWrite(pinNumber, HIGH);
}
这实际上被视为对函数
ledOn
的调用,后面是一个包含
digitalWrite
调用的块,这两个调用都是完全有效的(除了没有定义
ledOn
函数之外,当然,如果您能够克服编译错误,您在链接时肯定会发现这一点)

阻止此操作的特定编译错误是您尝试的定义:

ledStrobe(int time);{ ...
如上所述,这实际上更多的是对
ledStrobe
的调用,不幸的是,这不是一个有效的调用,因为您不应该在调用中提供数据类型(通常是
ledStrobe(time);

这就是第一个错误的来源。第二个原因是,由于您没有实际定义接收
time
参数的函数,因此使用它的代码抱怨它不存在

正确定义方法应该可以解决这两个问题,这可以通过以下方法实现:

class ledControler {
    public:
        void ledOn();
        void ledOff();
        void ledStrobe();
        void ledFade();
        ledControler(int);
    private:
        int pinNumber = 0;
};

ledControler::ledControler(int pin) {
    pinNumber = pin;
    pinMode(pinNumber, OUTPUT);
}

void ledControler::ledOn() {
    digitalWrite(pinNumber, HIGH);
}

void ledControler::ledOff () {
    digitalWrite(pinNumber, LOW);
}

void ledControler::ledStrobe(int time) {
    digitalWrite(pinNumber, HIGH);
    delay(time);
    digitalWrite(pinNumber, LOW);
    delay(time);
}

ledOn();{digitalWrite(pinNumber,HIGH);}
删除第一个
分号,并将其移到构造函数外部。其他的也一样。那么您在哪里声明
time
ledOn();{digitalWrite(pinNumber,HIGH);}
删除第一个
分号,并将其移到构造函数外。其他的也一样。那么您在哪里声明
时间呢?
?谢谢paxdiablo!这是一大堆帮助。谢谢paxdiablo!这是一大堆帮助。