【发布时间】:2014-02-17 03:43:51
【问题描述】:
考虑 Arduino 的以下代码。它编译并运行,但不提供预期的输出。
class Item {
private :
int val;
public :
int get(){
return val;
};
void set(int v) {
val = v;
};
};
class Sub{
private :
Item * items;
int writeIndex;
public :
Sub(){
writeIndex = 0;
};
void addItem(Item * obj) {
items[writeIndex] = *obj;
writeIndex++;
};
int get(int in) {
return items[in].get();
};
};
class Main{
private:
Sub * sub;
public:
void setSub(Sub * s) {
sub = s;
};
int get(int in) {
return sub->get(in);
};
};
Main m;
Sub s;
Item i1;
Item i2;
Item i3;
Item i4;
void setup(){
Serial.begin(115200);
while(!Serial) {}
i1.set(4);
i2.set(5);
i3.set(6);
i4.set(7);
s.addItem(&i1);
s.addItem(&i2);
s.addItem(&i3);
s.addItem(&i4);
m.setSub(&s);
}
void loop(){
int v = 0;
for(int i = 0; i < 4; i++) {
v = m.get(i);
Serial.println(v);
}
delay(10000);
}
输出如下: 0 5 6 7
但它应该打印: 4 5 6 7
为什么第一个 Item 对象似乎失去了它的赋值?
【问题讨论】:
标签: c++ arrays oop object arduino