繁体   English   中英

如何在C ++初始化列表中初始化指针数组

[英]How to Initialize array of pointers in a c++ Initializer List

我的课有一个指针数组( 为说明点而对代码进行了编辑

class IMX6S::IMX6SAnalogIn : public AP_HAL::AnalogIn {
public:
    IMX6SAnalogIn();

private:
    IMX6S::IMX6SAnalogSource* _channels[2];
};

class IMX6S::IMX6SAnalogSource : public AP_HAL::AnalogSource {
public:
    friend class IMX6S::IMX6SAnalogIn;
    IMX6SAnalogSource(int16_t pin, float initial_value);


};

我想在构造函数的初始值设定项列表中初始化_channels数组,因此尝试以下操作

IMX6SAnalogIn::IMX6SAnalogIn() :
     _channels{&IMX6SAnalogSource(0,0.0f),&IMX6SAnalogSource(1,0.0f) }
{
}

但是我得到警告-临时地址。 在初始化列表中

在初始化列表中初始化数组的这种方式不正确吗?

注意-我无法动态分配内存。 一切都必须静态分配。

您可以停止使它成为指针数组并使其成为对象数组:

std::array<IMX6S::IMX6SAnalogSource, 2> _channels;

IMX6SAnalogIn::IMX6SAnalogIn() :
     _channels{{0,0.0f},{1,0.0f}}
{
}

如果没有分配内存,就无法使用指针数组来执行此操作。 好的,您可以使对象成为类的直接成员,并将指向它们的指针存储在也是类成员的数组中。 但这在功能上与上面没有什么不同。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM