c++强制数组声明而不提供参数

c++ force array declaration without giving parameters

本文关键字:参数 声明 数组 c++      更新时间:2023-10-16

我目前正试图在c++程序中编程一个对象数组。然而,在尝试创建数组时,它总是给我错误。因此,在我的代码之上,我有以下代码:

#define sensNumber 4
ros::Publisher pub_range2 [sensNumber];

这给出了错误:

multisone2.ino:19:38: error: no matching function for call to ‘ros::Publisher::Publisher()’

所以它试图调用Publisher的构造函数,为什么?我该如何阻止它?

现在我知道Vectors也可以做到这一点,但我正在努力优化代码,特别是为了读取速度,所以我宁愿避免使用Vectors(是的,我知道它仍然是线性的,但访问这个数组代表了我代码的很大一部分)。

当您试图堆栈分配ros::PublishersensNumber实例时,必须调用默认构造函数

一种替代方案是为ros::Publisher分配一个指针数组。更好的是,std::unique_ptrstd::shared_ptr的数组。

当您声明一个c++对象数组时,实际上是在实例化每个元素。这意味着为每个数组元素调用默认的无参数构造函数。如果在声明数组时不想实例化所有元素,那么应该声明一个指针数组,然后根据需要初始化每个元素。