c++强制数组声明而不提供参数
c++ force array declaration without giving parameters
我目前正试图在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::Publisher
的sensNumber
实例时,必须调用默认构造函数。
一种替代方案是为ros::Publisher
分配一个指针数组。更好的是,std::unique_ptr
或std::shared_ptr
的数组。
当您声明一个c++对象数组时,实际上是在实例化每个元素。这意味着为每个数组元素调用默认的无参数构造函数。如果在声明数组时不想实例化所有元素,那么应该声明一个指针数组,然后根据需要初始化每个元素。
相关文章:
- Arduino C++在构造函数中用参数声明对象数组
- 如何使用参数声明实例?
- 从非类型模板参数声明 constexpr 数组的可移植方法
- 用相同的参数声明两个构造函数的最偶像化的方法是什么?
- 在实现文件中使用模板参数声明方法
- 使用 std::move 将参数传递给函数,如果该参数声明为按值传递或使用移动操作数 &&,是否有区别?
- 如果我提前将参数声明为变量而不是将它们内联写入函数调用,那有什么区别(在内存方面)?
- 为什么重载运算符>在参数声明 const 时不起作用?
- 字符串无法启动参数声明
- 视觉C++:即使使用关键字,参数声明也会隐藏类成员"this"
- C 迭代器从Typedef std :: Map作为模板参数声明
- 参数声明中的"const T const"
- 如何处理"警告:在参数声明中使用'auto'仅适用于 -fconcepts"
- 将容器作为模板参数声明过滤
- 同时使用模板和参数声明对象
- 从variadic模板参数声明成员变量
- 在 C++ 中,为什么我们在重载函数中将引用参数声明为 const
- 在C++中,是否可以使用定义中未使用的模板参数声明模板结构?
- C++ "无法将参数声明为抽象类型
- 默认参数声明:为什么默认字符串参数必须是 const