У меня есть класс, в конструктор которого я хочу передать параметры в виде enum.
class PressureValue
{
public:
enum pressureMeasureUnit {puUnknown, puAuto, puAtmosphere, puTechAtmosphere,
puKgCm2, puPascal, puMillimetreOfMercury, puTor, puMillibar}pressureMeasureUnitP;
PressureValue(PressureValue::pressureMeasureUnit defaultUnit = puKgCm2){
defaultPressureUnit = defaultUnit;
}
~PressureValue(){}
float value = 0.0;
//перегрузка оператора
PressureValue& operator=(float f){
value = f;
return *this;
}
operator float() const{
return value;
}
private:
pressureMeasureUnit defaultPressureUnit;
pressureMeasureUnit convertingUnit;
};
class PressureDrop
{
private:
PressureValue declinePressure, declinePressureUp, declinePressureDown, declinePressureDelta;
//PressureValue environmentPressure;
PressureValue environmentPressure(PressureValue::puMillimetreOfMercury);
int declinePressureTime, environmentTemperature;
public:
PressureDrop(){}
~PressureDrop(){}
};
int main(){
PressureValue p(PressureValue::puMillibar);
}
Если это делать действительно в main, то все хорошо. А если я хочу создать экземпляр класса PressureValue в виде private-поля какого-то класса, то получаю ошибку:
ошибка: 'PressureValue::puMillimetreOfMercury' is not a type
Как-то можно выйти из этой ситуации?
Как я понял, вы пытаетесь сделать инициализацию поля environmentPressure при объявлении (а не объявить функцию). Для этого следует использовать list-initialization:
PressureValue environmentPressure{PressureValue::puMillimetreOfMercury};
С переходом на С++11 list initialization следует использовать вообще всегда.
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости