首页 > 解决方案 > 在 C++ 的此构造函数警告中未初始化成员“xyz”

问题描述

我有以下课程:

class OneWireSensor : public Sensor {
private:
    float lastTemperatureValue;
    float lastHumidityValue;
public:
    OneWireSensor(PinData *pinData);
    float getLastTempVal(void);
    float getLastHumidVal(void);
};

类的构造函数:

OneWireSensor::OneWireSensor(PinData *pinData) : lastTemperatureValue(0.0F), lastHumidityValue(0.0F) {
    auto oneWireDriver = std::make_unique<OneWireDriver>(pinData);
    this->driver = std::move(oneWireDriver);
    this->lastTemperatureValue = 0.0f;
    this->lastHumidityValue = 0.0f;
}

我仍然收到两个警告:

Member 'lastHumidityValue' was not initialized in this constructor Code Analysis Problem
Member 'lastTemperatureValue' was not initialized in this constructor Code Analysis Problem

我在构造函数的初始化列表中明确分配了这些变量的值。即使在构造函数主体中再次分配它们也无济于事。我读过类似的问题,但解决方案仍然给我以下警告。我的 C 编译器的版本是 gnu-C11 和 C++ 编译器的版本:gnu-C++14。

这里可能是什么情况?

编辑:传感器抽象类的定义:

class Sensor {
protected:
    std::unique_ptr<GenericDriver> driver;
public:
    Sensor() {};
    virtual void startNewReadout(void) = 0;
};

创建 OneWireSensor 对象:

PinData sensor1Data = {GPIOA, GPIO_PIN_4};
OneWireSensor tempSensor1(&sensor1Data);

标签: c++constructorinitialization

解决方案


推荐阅读