繁体   English   中英

我可以为 class 成员使用非常量数组大小吗?

[英]Can I use non-constant array size for class members?

在下面的代码中, uint16_t sine[ANGULAR_RESO]抛出错误non static member reference must be relative to specific object struct

class BLDCControl  {
    public:
        uint16_t ANGULAR_RESO;
        uint16_t sine[ANGULAR_RESO];
        uint16_t pwm_resolution = 16;

}

我究竟做错了什么?

要使用编写的 class, ANGULAR_RESO必须是编译时间常数,这样它就不再是每个 object 的特定成员。 它必须是 static。 如果您需要不同的数组大小,请使用std::vector ,如下所示

class BLDCControl  {
    public:

        uint16_t ANGULAR_RESO;
        std::vector<uint16_t> sine;
        uint16_t pwm_resolution = 16;

}

如果ANGULAR_RESO是您的数组的大小(如 @ aschepler 建议的那样),您可以在没有它的情况下使用 go 因为您的std::vector具有此大小作为私有成员,您可以通过std::vector<unit16_t>::size()获取它的值std::vector<unit16_t>::size()方法

#include <cstdint>
#include <vector>
struct BLDCControl  {
    BLDCControl(uint16_t ANGULAR_RESO, uint16_t pwm_resolution_v = 16) :
            pwm_resolution {pwm_resolution_v},
            sine {std::vector<uint16_t>(ANGULAR_RESO)}{}

    std::vector<uint16_t> sine;
    uint16_t pwm_resolution;

};
int main(){

    BLDCControl u(4, 16);
    std::cout << "ANGULAR_RESO is:\t"  << u.sine.size();


}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM