gpt4 book ai didi

c++ - Arduino oop 错误

转载 作者:行者123 更新时间:2023-11-28 00:07:55 24 4
gpt4 key购买 nike

我正在学习如何使用 C++ 进行艰巨的编程,但遇到了一个我似乎无法弄清楚的错误。

这是我的代码

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 调用的 block ,两者都是完全有效的(除了那里的事实没有定义 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);
}

关于c++ - Arduino oop 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34503358/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com