[英]Copying an array of Object Pointers
What would be the correct way to copy an array of pointers pointing to a certain object into another object through the constructor?通过构造函数将指向某个 object 的指针数组复制到另一个 object 中的正确方法是什么?
Assuming that:假如说:
// ClassA.h
class ClassA {
ClassB** m_classBs{};
public:
ClassA(const ClassB* classBs[], size_t cnt);
}
ClassA::ClassA(const ClassB* classBs[], size_t cnt) {
m_classBs = new ClassB*[cnt]
for (size_t i = 0; i < cnt; i++) {
m_classBs[i] = &classBs[i];
// I have tried here using *m_classBs[i] = &classBs[I];
// and a lot of variations but neither seems to work for me
// at the moment. I am trying to copy the array of pointers
// from classBs[] (parameter in the constructor) to m_classBs
}
}
You have to use use the correct type:您必须使用正确的类型:
class ClassA {
const ClassB** m_classBs;
public:
ClassA(const ClassB* classBs[], size_t cnt);
~ClassA() { delete[] ClassB; }
};
ClassA::ClassA(const ClassB* classBs[], size_t cnt) : m_classBs(new const ClassB*[cnt]) {
for (size_t i = 0; i < cnt; i++) {
m_classBs[i] = classBs[i];
}
}
I prefer to completely avoid new
whenever possible:我宁愿尽可能完全避免
new
:
class ClassA {
std::vector<const ClassB*> m_classBs;
public:
ClassA(const ClassB* classBs[], size_t cnt);
};
ClassA::ClassA(const ClassB* classBs[], size_t cnt) : m_classBs(cnt) {
for (size_t i = 0; i < cnt; i++) {
m_classBs[i] = classBs[i];
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.