我是一位相当有经验的 .net 开发人员,但对 Arduino 和 C/C++ 不熟悉,我正在尝试创建我的第一个库,这是一个用于 7 段 LED 显示屏的简单驱动程序。我有许多迟钝的编译器错误,但本着一次一件事的精神,这是第一个。我想在我的类中添加一个无参数的构造函数,当我编译库时编译得很好,但是当我尝试在草图中使用该类时,编译器给了我相当迟钝的“对‘sevenSegmentLed’中成员‘setDigit’的请求,它是非类类型“SevenSegmentLed()”
最简单的示例代码如下:
#ifndef SevenSegmentLed_h
#define SevenSegmentLed_h
#include "Arduino.h"
class SevenSegmentLed
{
public:
void setDigit(int digit);
SevenSegmentLed();
};
#endif
#include "Arduino.h"
#include "SevenSegmentLed.h"
SevenSegmentLed::SevenSegmentLed()
{
}
void SevenSegmentLed::setDigit(int digit)
{
}
#include "SevenSegmentLed.h"
SevenSegmentLed sevenSegmentLed();
void setup() {
sevenSegmentLed.setDigit(4);
}
void loop() {
// put your main code here, to run repeatedly:
}
但是,如果我将构造函数签名更改为:SevenSegmentLed(int wtf);
并实例化它:SevenSegmentLed sevenSegmentLed(1);
它编译得很好。所以正如参数所说,WTF?