C INT成员自行更改
c++ int member changes on its own
我是C 的新手。看起来成员变量_scheduleSize
无缘无故地获得了" Integer_half_max"的值。有人可以解释一下,为什么会发生这种情况?
调用
leds.addSchedulePoint(new ScheduledLedPoint(ScheduleTime(9), 0));
方法:
void ScheduledLeds::addSchedulePoint(ScheduledLedPoint *schedulePoint) {
Serial.print("_scheduleSize:");
Serial.println(_scheduleSize);
_schedule[_scheduleSize++] = schedulePoint;
Serial.print("_scheduleSize:");
Serial.println(_scheduleSize);
for (size_t i = 0; i < _scheduleSize; i++) {
Serial.println(_schedule[i]->getLevel());
}
}
导致这种控制台输出:
_scheduleSize:0
_scheduleSize:1073680860
0
Exception (28):
epc1=0x40206514 epc2=0x00000000 epc3=0x00000000 excvaddr=0x00000010 depc=0x00000000
下面您可以看到整个课程:
class ScheduledLeds {
public:
ScheduledLeds(int pin);
void addSchedulePoint(ScheduledLedPoint *schedulePoint);
void process(ScheduleTime currentTime);
void freezeLedLevel(int targetLevel, int minutes);
int _pin;
private:
ScheduledLedPoint *_schedule[];
int _scheduleSize;
int _count;
int _size;
long _unfreezeTime;
int _lastLevel;
ScheduleTime _lastTime;
void setTransitionalLightLevel(ScheduleTime now, ScheduledLedPoint nextPoint);
void setLightLevel(int targetLevel);
};
ScheduledLeds::ScheduledLeds(int pin) {
pinMode(pin, OUTPUT);
_pin = pin;
_scheduleSize = 0;
_size = 10;
_unfreezeTime = millis();
ScheduledLedPoint *_schedule[_size];
}
void ScheduledLeds::addSchedulePoint(ScheduledLedPoint *schedulePoint) {
Serial.print("_scheduleSize:");
Serial.println(_scheduleSize);
_schedule[_scheduleSize++] = schedulePoint;
Serial.print("_scheduleSize:");
Serial.println(_scheduleSize);
for (size_t i = 0; i < _scheduleSize; i++) {
Serial.println(_schedule[i]->getLevel());
}
}
ScheduledLedPoint *_schedule[];
无效C ,不应编译。有些编译器将其视为扩展名 - 但即使在那里,它的大小为零。_schedule[x]
对任何值的x
表现出未定义的行为。
在构造函数中编写ScheduledLedPoint *_schedule[_size]
时,您似乎相信,这不会影响名为_schedule
的数据成员。取而代之的是,它创建并立即摧毁了一个局部变量,该变量也恰好被命名为_schedule
;这完全具有零净效应。
对于可变大小的阵列的数据结构,请使用std::vector
。
,因为您有语法错误,包括此递归函数
相关文章:
- int数据类型的指针指向的是什么,如果是一个类的私有数据成员,我们创建了该类的两个对象?
- 枚举成员与静态 int 成员?
- 在类 (C++) 之外设置 const int 成员变量
- 错误:'class std::unique_ptr<std::set<long unsigned int> >'没有名为 'size' 的成员
- 错误:请求"数据"中的成员"大小",其非类类型为"int [5]"
- 'std::slice_array<int>'中没有命名'sum'的成员
- 对结构int成员进行排序
- for 循环说 - 错误 成员引用基类型"int [13]"不是结构或联合
- 错误:无效使用非静态成员函数"int test::hotplug_callback(libusb_contex
- 为什么我不能将 int 分配给结构成员的联合成员?
- 缺少类型说明符 - int 假定 声明静态成员后出错
- 参数包推导不一致 int 和 int& 在可变参数模板化成员函数中创建运行成员函数的线程
- C INT成员自行更改
- C++0x auto 无法推断向量<int>成员函数指针的类型
- 将具有 int* 成员C++结构编接到 C#
- 静态const int成员和未定义的引用
- 我应该将其声明为类的const int成员变量吗?
- 不能将int赋值给返回类的int成员
- 如何在类构造函数中初始化 const int 成员
- 用int成员实现哪些操作符