我有以下卫星代码的安宁

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::bitsetstd::vector<bool>,如果您不需要bool数组,则打包这些位以使用更少的内存。

09-07 20:42