类构造函数中未定义的长度数组

时间:2019-07-11 02:01:05

标签: c++

我一直在尝试在类构造函数中使用数组。这是我的代码:

struct Motor_Group{
    int Motors[3];
    int Encoder;
}; 
int main()
{
    Motor_Group Left_Drive {{2,3},3};
    Motor_Group Right_Drive {{2,3},3};
    cout<< sizeof(Left_Drive.Motors)/sizeof(int);
    return 0;
}

但是,问题是我想使数组motors的长度不确定,直到声明其内容为止。我该怎么办?

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

如果您不需要MotorGroup是同一类型, 那么您可以模板化数组大小。

使用std::array

#include <array>
#include <iostream>

template<size_t motor_count>
struct Motor_Group{
    std::array<int,motor_count> Motors;
    int Encoder;
}; 
int main()
{
    Motor_Group<2> Left_Drive {{2,3},3};
    Motor_Group<3> Right_Drive {{2,3,4},3};
    std::cout<< Left_Drive.size();
    // Left_Drive = Right_Drive; // Error at compile time, since Motor_Group<2> != Motor_Group<3>
    return 0;
}