我有以下卫星代码的安宁
class Satellite
{
private:
const static int CHIP_SEQ_LENGTH = 1023;
bool chipSequence[CHIP_SEQ_LENGTH];
int id;
public:
Satellite(int id, bool chipSequence[])
{
this->id = id;
this->chipSequence = chipSequence;
};
}
我在遇到错误
this->chipSequence = chipSequence;
具有以下说明:
Expression must be a modifiable lvalue.
现在我的问题是,如何将构造函数传递的数组存储到类变量中?
最佳答案
内置数组是令人讨厌的事情,行为不像大多数C++对象。特别是,它们是不可分配的。
在现代C++中,我可能会使用std::array<bool, CHIP_SEQ_LENGTH>
。这是适当的可复制对象类型。
如果您被困在过去,则可以创建自己的可复制包装器类型:
struct ChipSequence {
bool bits[CHIP_SEQ_LENGTH];
};
或显式复制数据:
std::copy(chipSequence, chipSequence+CHIP_SEQ_LENGTH, this->chipSequence);
还有其他替代方案,例如
std::bitset
或std::vector<bool>
,如果您不需要bool
数组,则打包这些位以使用更少的内存。