我有以下的卫星代码和平
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.
现在我的问题是,如何将构造函数传递的数组存储到类变量中?
答案 0 :(得分:2)
内置数组是一些讨厌的东西,它们的行为与大多数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
的数组,则会将这些位打包以使用更少的内存。
答案 1 :(得分:0)
您必须注意,数组的名称是指向数组的第一个节点的指针,因此当您编写下面的代码时,您将把数组放入内存并浪费它。
this->chipSequence = chipSequence;
实际上,简单的方法是从源到目标逐个创建复制节点的for
循环。