带有布尔数组成员的 C++ 结构.如何在主代码中使用
c++ struct with bool array member. How use in main code
struct thread_data
{
int seq, packetNum;
bool ackTally[4];
};
main:
bool boolArray[4];
data[j].packetNum = 3;
data[j].seq = 1;
data[j].ackTally = boolArray;
运行此代码会给我此错误
错误:将bool [1]
分配给bool [0]
的类型不兼容
data[j].ackTally = boolArray;
如何在代码中解决此问题? (这可能不相关,因为我可能希望稍后在主代码中更改其中一些值(
不能
分配 C 样式数组。 有两种简单的方法可以解决此问题:
首先,使用 std::copy
而不是赋值:
#include <algorithm>
#include <iterator>
struct thread_data
{
int seq, packetNum;
bool ackTally[4];
};
int main() {
thread_data data;
bool boolArray[4];
// Initialize boolArray.
std::copy( std::begin(boolArray), std::end(boolArray),
std::begin(data.ackTally) );
}
或者其次,将 C 样式数组替换为 std::array
。 std::array
的几个好处之一是可以分配:
#include <array>
struct thread_data
{
int seq, packetNum;
std::array<bool, 4> ackTally;
};
int main() {
thread_data data;
std::array<bool, 4> boolArray;
// Initialize boolArray.
thread_data.ackTally = boolArray;
}
无法分配数组。必须在循环中复制每个元素。不过,您不必自己编写该循环,因为标准库中有一个算法:std::copy
.
附言:从boolArray
复制将具有未定义的行为,因为它的值是不确定的。
相关文章:
- 当我尝试通过 arduino 上的引用传递布尔数组时出现问题
- 以十为基数的数字到布尔数组,该数组要求二进制/基数为 2 的数字
- G++ 发出警告,要求删除一个代码的数组,但不删除另一个代码的数组
- 存储另一个函数返回的布尔数组时遇到问题
- 尝试设置唯一指针布尔数组的值时BAD_ACCESS错误
- C++ CopyMemory 和布尔数组
- 用最少的代码行数替换c++中的一组字符
- 将uint64_t位掩码转换为 std::布尔数组
- 使用 true 初始化布尔数组时出现问题
- CRC32 C++使用布尔数组和手动逐位异或实现
- 在 c++ 代码中将数组传递给函数错误
- 带有布尔数组成员的 C++ 结构.如何在主代码中使用
- 使用动态布尔数组时出现问题
- 以C++为单位旋转布尔数组
- 将 __m128i?布尔数组中每个布尔字节的低位提取到打包的位图
- 给定一个大小的布尔数组,这都是真实的,我将如何仅使用递归将所有值设置为false
- 尝试使用Huffman String代码更新数组
- 为什么在我的 mex 代码中将数组大小标识为零?
- 在动态2D布尔数组中更改一个值似乎会更改不同数组中不同位置的值
- 代码ARP数组,指针和内存分配(Windows IP功能)的不可理解的部分