我是一名有用的助手,可以为您翻译文本。
在其他某个地方,我运行了一个类
虽然这个方法可行,但我真的很好奇这是否是良好的实践。我正在从对象内部调用
我有一个类,让我们称之为A
。类A
有两个子类,分别是a
和b
。
我正在创建一个类A
的指针,就像这样:
A *pointer;
在程序的某个时刻,我会像这样初始化指针:
pointer = new a();
在其他某个地方,我运行了一个类
A
的函数:pointer->function(&pointer);
这个函数在类A
中(所以所有子类都有它)。当调用这个函数时,有可能我想要将指针切换到另一个子类,以下是我尝试过的方法:
void A::function(A **pointer)
{
if (something)
{
delete *pointer;
*pointer = new b();
}
}
虽然这个方法可行,但我真的很好奇这是否是良好的实践。我正在从对象内部调用
delete
并释放对象本身,这可能是未定义的行为,我运气好才能使它工作吗?我没有正确理解吗?我是不是把它弄得比应该复杂?
*this
之后仍然使用它的某些成员,那么你会遇到麻烦。如果不是这样,那为什么要将其作为成员函数呢? - Bo PerssonA* A::function(const A& obj) { ... return new b(); }
,并确保旧对象被自动销毁(例如使用智能指针)。 - Petrthis
。我现在正在以答案的形式撰写扩展版本。 - Petrfunction
根据子类使用了许多类成员。我需要它成为类的一部分。 - TomTsagk