[英]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.