Передача enum'а в конструктор класса

246
01 декабря 2017, 06:02

У меня есть класс, в конструктор которого я хочу передать параметры в виде 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

Как-то можно выйти из этой ситуации?

Answer 1

Как я понял, вы пытаетесь сделать инициализацию поля environmentPressure при объявлении (а не объявить функцию). Для этого следует использовать list-initialization:

PressureValue environmentPressure{PressureValue::puMillimetreOfMercury};

С переходом на С++11 list initialization следует использовать вообще всегда.

READ ALSO
Перевод из std::wstring в число

Перевод из std::wstring в число

Если у меня есть указатель на строку в середине которой содержится числоЯ могу перевести в число примерно так:

245
Как соединить имя пути и файла?

Как соединить имя пути и файла?

Нужно сохранить файл скриншота в папке пользователя в Temp

233
Visual Studio Не удается активировать приложение для Магазина Windows

Visual Studio Не удается активировать приложение для Магазина Windows

У меня проблема с UWP и Visual Studio 2015 ProЯ создаю UWP приложение на Visual C++, и в нем просто отправляю http запрос на сервер

346
vector<shared_ptr> ptrs, ptrs.pop_back() returns void

vector<shared_ptr> ptrs, ptrs.pop_back() returns void

Есть следующий класс:

207