Вы не можете инициализировать его, кроме
const float test::a = something;
За пределами класса (в одном модуле компиляции).Тем не менее, вы можете делать то, что написали, и это установит переменную в значение, которое вы передаете.
Если вы хотите установить его только при первом вводе конструктора,вы можете (но не должны) делать что-то вроде
test::test(int bb, float aa){
static float _unused = (test::a = aa);
b=bb;
}
Но это не инициализирует его, оно просто присваивает ему значение, и вам все равно придется передавать переменную в конструктор каждыйвремя и ничего не будет сделано с ним (если вы не дадите ему значение по умолчанию или что-то в этом роде).Это действительно ужасный дизайн, хотя, вероятно, лучше просто иметь в классе static
функцию для установки переменной.