如何将数组传递给构造函数并保存在类变量中

时间:2014-05-16 16:54:45

标签: c++ arrays constructor class-variables

我有以下的卫星代码和平

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.

现在我的问题是,如何将构造函数传递的数组存储到类变量中?

2 个答案:

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

答案 1 :(得分:0)

您必须注意,数组的名称是指向数组的第一个节点的指针,因此当您编写下面的代码时,您将把数组放入内存并浪费它。

this->chipSequence = chipSequence;

实际上,简单的方法是从源到目标逐个创建复制节点的for循环。