在构造函数中分配数组

rob*_*del 1 c++

在课堂上我有一个公共属性TissueCompartments:

class Diver {
public:
    TissueCompartments tissueCompartments[16];
    Diver();
    Diver(const Diver& orig, TissueCompartments tissueCompartments[16]);
    virtual ~Diver();
};
Run Code Online (Sandbox Code Playgroud)

我有一个构造函数

Diver::Diver(const Diver& orig, TissueCompartments tissueCompartments[16]) {
    this->tissueCompartments=tissueCompartments;
}
Run Code Online (Sandbox Code Playgroud)

我得到这个错误:错误:'TissueCompartments*'与'TissueCompartments [16]'分配不兼容的类型

Pau*_*zie 5

数组不可分配.在构造函数体中执行此操作:

#include <algorithm>
//..
Diver::Diver(const Diver& orig, TissueCompartments* tC)
{
    std::copy(tC, tC + 16, tissueCompartments);
    //...
}
Run Code Online (Sandbox Code Playgroud)

此外,请注意此声明:

Diver::Diver(const Diver& orig, TissueCompartments tissueCompartments[16]) 
Run Code Online (Sandbox Code Playgroud)

与此无异:

Diver::Diver(const Diver& orig, TissueCompartments* tissueCompartments)
Run Code Online (Sandbox Code Playgroud)

即使放入[16]参数,数组也会衰减为指针.所以这[16]绝对没有效果(除了帮助你知道它是一个16的数组被引用).

另请注意,TissueCompartment在执行任何这些更改之前,类型必须是可分配的类型.