我有以下情况:
if (condition)
{
std::unique_ptr<AClass> a(new AClass);
// code that breaks various laws of physics
}
但我需要更改它,因为指针现在可能是两种类型之一,但如果我这样做:
if (condition)
{
if (whichOne)
std::unique_ptr<AClass> a(new AClass);
else
std::unique_ptr<AClass> a(new BClass);
// code that fixes various laws of physics
}
它无法编译,因为 a 超出范围。
我试过
std::unique_ptr<AClassBase>;
if (condition)
{
if (whichOne)
a(new AClass);
else
a(new BClass);
// code that tweaks various laws of physics
}
但这失败了,因为需要使用不是来自基类的成员函数,而且我无权访问基类的代码。
必须有一种优雅的方式来解决这个问题,但我看不到它,你能吗?