错误:"current_millis"未在此范围内声明
error: 'current_millis' was not declared in this scope
您的意思是我的公共类变量没有在范围中声明,我不仅在标题文件中声明了它>:{
IDE Arduino 1.6.12Arduino类型Uno这无关紧要,只需要它来验证
timelycall.cpp
#include "Arduino.h"
#include "timelyCall.h"
timelyCall::timelyCall() {
current_millis = millis();
}
timelyCall::~timelyCall() {
这里有错误/
delete current_millis;
}
void timelyCall::callEvery(void (&f)(), int ms) {
if (millis() - current_millis > ms) {
f();
current_millis = millis();
}
}
void setCurrentMillis() {
current_millis = millis();
}
timelycall.h
class timelyCall {
public:
timelyCall();
~timelyCall();
unsigned long current_millis;
void callEvery(void (&f)(), int ms);
};
FullError
Arduino: 1.6.12 (Windows 7), Board: "Arduino/Genuino Uno"
sketchtimelyCall.cpp: In destructor 'timelyCall::~timelyCall()':
timelyCall.cpp:8: error: type 'long unsigned int' argument given to 'delete', expected pointer
delete current_millis;
^
sketchtimelyCall.cpp: In function 'void setCurrentMillis()':
timelyCall.cpp:19: error: 'current_millis' was not declared in this scope
current_millis = millis();
^
exit status 1
type 'long unsigned int' argument given to 'delete', expected pointer
This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.
不要在destructor中删除 current_mills
。您只能动态删除变量。换句话说,如果使用新对象创建对象,则以1:1的删除将其删除。
至于第二个错误,在timelyCall
类中没有setCurrentMills()
函数。
您必须修改类定义:
class timelyCall {
public:
timelyCall();
~timelyCall();
unsigned long current_millis;
void setCurrentMills();
void callEvery(void (&f)(), int ms);
};
然后将功能定义更改为 void timelyCall::setCurrentMills()
。
也是传递要分配的值函数set
的标准。因此,将将此签名更改为void setCurrentMills(const unsigned long& mills);
的未来修改确实是有益的,而不是将Funcion mills()
的返回值分配给current_mills
,而是将具有此函数的返回值的设置器,例如此功能,例如此 object.setCurrentMills(mills());
在Destructor中不要删除current_millis
,仅删除使用new
创建的内容。
相关文章:
- 错误:未在此范围内声明'reverse'
- 错误:"imread"未在此范围内声明
- 未在此范围内声明错误 'xy'
- Socklen_t未在此范围内声明
- 错误:'[' 之前预期的非限定 id 和错误:'users'未在此范围内声明
- "Main"已在当前范围内声明
- c++ 变量在宏的扩展中没有在这个范围内声明
- C++ 在编译过程中 strtok 函数 Eclipse 说没有在范围内声明?
- 'num1'未在此范围内声明
- 如何找到在本地范围内声明的变量的地址?
- NT状态未在此范围内声明
- 变量未在此范围内声明 数组线性搜索
- 包含文件中的 Typdef "未在此范围内声明"
- 'ClassName'和'ClassInstance'未在此范围内声明
- C++ 中的类之间的数据重新循环 - 错误:'<class name>'未在此范围内声明
- 代码作为 C 文件工作,但不作为C++文件,错误:'__builtin_types_compatible_p'未在此范围内声明
- 如何修复错误:"vreinterpretq_u32_f64"未在此范围内声明 - 在Android上使用Eigen构建
- 如何修复C++中的"arrStud未在此范围内声明"错误
- 错误:"SHGetKnownFolderPath"未在此范围内声明
- 错误:'Sprite'未在此范围内声明