简体   繁体   English

复制 Object 指针数组

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM