Чтобы использовать класс в том виде, в котором он написан, ANGULAR_RESO
должен быть постоянной времени компиляции, и таким образом он больше не является указанным c членом для каждого объекта. Это должно быть stati c. Если вам нужен переменный размер массива, используйте 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()
метода
#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();
}