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

时间:2014-10-23 08:13:40

标签: c++ arrays ros

我目前正在尝试在c ++程序中编写一组对象。但是,它在尝试创建数组时一直给我错误。 所以在我的代码之上我有以下代码:

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

这给出了错误:

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

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

现在我知道这也可以通过向量来完成,但我试图优化代码esp。为了阅读速度所以我宁愿避免向量(是的,我知道它仍然是linair但访问此数组代表我的代码的重要部分)。

2 个答案:

答案 0 :(得分:2)

当您尝试堆叠分配sensNumber ros::Publisher个实例时,必须调用默认构造函数

另一种方法是分配一个指向ros::Publisher的指针数组。更好的是,std::unique_ptrstd::shared_ptr

的数组

答案 1 :(得分:1)

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