如何在导数 class 中删除基数 class 的对象的新对象?

how to delete a new of an object of base class in a derivative class?

假设我有一个基 class,它包含一个指针和一个删除指针的析构函数。

class Base {
private: 
  int *p;
public:
  Base(int data) : p(new int[data]) {}
  ~Base() {delete[] p;}
};

我有一个导数 class,它也包含一个指针,并且有一个方法,我可以在其中创建一个新的基 class。

class Drived: public Base{
private:
  Base* _root;
public:
  Drived(int data) : Base(data), _root(new Base(data)) {}
  ~Drived() {delete _root;}
  void myMethod() {Base* bewBase = new Base(10);}
};

所以如果我这样做,我会发生内存泄漏,因为在方法 myMethod 中,我创建了一个新的并且从不删除它。
我想知道如何解决这个问题。
在此先感谢您对我的帮助。
P.S: 这个问题中的代码只是示例,我没有正确编译。我只是想更好地了解我的问题。我也知道我可以为这种员工使用 std::unique_ptr,但我真的很想学习如何管理这种抛出的原始指针。

像这样:

class Drived: public Base{
private:
  Base* _root;
  Base* bewBase;
public:
  Drived(int data) : _root(new Base(data)) {bewBase = nullptr;}
  ~Drived() {delete _root; if (bewBase != nullptr) delete bewBase;}
  void myMethod() {bewBase = new Base(10);}
};

或者你可以重用_root指针,在重新分配之前删除_root的内容。