[英]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.