C++ 管理Arduino上的对象数组问题
我正在尝试管理一组对象(这是一个简化版本)。静态创建对象时,它们会正确显示。当我动态构建它们时,结果就像我没有初始化它们一样。下面的测试显示了这两个结果。有什么想法吗C++ 管理Arduino上的对象数组问题,c++,arrays,object,arduino,C++,Arrays,Object,Arduino,我正在尝试管理一组对象(这是一个简化版本)。静态创建对象时,它们会正确显示。当我动态构建它们时,结果就像我没有初始化它们一样。下面的测试显示了这两个结果。有什么想法吗 class Student { public: String name; int rollno; Student() {} Student(String x, int y) { name = x; rollno = y; } void print
class Student {
public:
String name;
int rollno;
Student() {}
Student(String x, int y) {
name = x;
rollno = y;
}
void printDetails() {
Serial.print(rollno); Serial.print(" - "); Serial.println(name);
}
};
//declare array with specific size
Student statics[5];
Student dynamics[5];
void setup()
{
//Open serial port at 115200 baud
Serial.begin(115200);
//Wait until the serial port has opened
while (!Serial) delay(1);
Serial.println("setup static");
//assign objects
statics[0] = Student("Ram", 5);
statics[1] = Student("Alex", 1);
statics[2] = Student("Lesha", 4);
statics[3] = Student("Emily", 3);
statics[4] = Student("Anita", 2);
for (int i = 0; i < 5; i++) {
statics[i].printDetails();
}
Serial.println("setup dynamic");
//assign objects
for (int i = 0; i > sizeof(dynamics); i++) {
String name = "Name-" + String(i);
dynamics[i] = Student(name, i);
}
for (int i = 0; i < 5; i++) {
dynamics[i].printDetails();
}
}
// Add the main program code into the continuous loop() function
void loop()
{
}
班级学生{
公众:
字符串名;
int-rollno;
学生(){}
学生(字符串x,整数y){
name=x;
rollno=y;
}
无效打印详细信息(){
Serial.print(rollno);Serial.print(“”);Serial.println(name);
}
};
//声明具有特定大小的数组
学生统计[5];
学生动态[5];
无效设置()
{
//在115200波特时打开串行端口
序列号开始(115200);
//等待串行端口打开
而(!串行)延迟(1);
Serial.println(“设置静态”);
//指定对象
静力学[0]=学生(“Ram”,5);
静力学[1]=学生(“亚历克斯”,1);
静力学[2]=学生(“Lesha”,4);
静力学[3]=学生(“Emily”,3);
静力学[4]=学生(“安妮塔”,2);
对于(int i=0;i<5;i++){
statics[i].printDetails();
}
Serial.println(“设置动态”);
//指定对象
对于(int i=0;i>sizeof(dynamics);i++){
String name=“name-”+字符串(i);
动力学[i]=学生(姓名,i);
}
对于(int i=0;i<5;i++){
动力学[i].printDetails();
}
}
//将主程序代码添加到continuous loop()函数中
void循环()
{
}
您必须将
操作符替换为,正如另一个答案所提到的,您得到的是大于,而不是小于。但除此之外,您计算的数组长度不正确。应该是:
for (int i = 0; i < sizeof(dynamics) / sizeof(dynamics[0]); i++) {
for(int i=0;i
或者,更好、更可靠的方法是在数组中声明一个长度变量:
Student dynamics[5];
const int DYN_LEN = 5; // Could also be a macro to save a bit of arduino memroy
// ...
for (int i = 0; i < DYN_LEN; i++) {
学生动态[5];
const int DYN_LEN=5;//也可以是一个宏来保存一点arduino内存
// ...
对于(int i=0;i
谢谢。我已经解决了这个问题,现在正在处理向类对象传递puction指针的问题。
Student dynamics[5];
const int DYN_LEN = 5; // Could also be a macro to save a bit of arduino memroy
// ...
for (int i = 0; i < DYN_LEN; i++) {