Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 管理Arduino上的对象数组问题_C++_Arrays_Object_Arduino - Fatal编程技术网

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++) {