在课堂上我有一个公共属性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]'分配不兼容的类型
数组不可分配.在构造函数体中执行此操作:
#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在执行任何这些更改之前,类型必须是可分配的类型.
| 归档时间: |
|
| 查看次数: |
145 次 |
| 最近记录: |