鉴于下面的代码段指针:铸造指针在一个类型安全的方式
class Base
{
public:
virtual ~Base() = default;
};
class Derived : public Base { };
int main(void)
{
Derived d;
Base* pb = &d;
Base** ppb = &pb;
Derived** ppd = ...; // Can this be defined in a type-safe manner?
return 0;
}
是否可以得到用于分配给ppd
类型安全表达,而不引入类型的中间变量Derived*
?
没有'ppd'指向的'Dervied *'对象。你首先必须介绍一个。在你问之前,'pb'不是。 –
@IgorTandetnik我已经更新了这个问题,所以很明显这个想法并不是要引入一个'ppd'的对象来指向。 –
“T *'类型的有效指针可以是null,也可以指向”T“类型的对象。由于你的程序中没有任何类型的Derived *对象,你也不想介绍它,所以'ppd'只能为null。我假设'派生** ppd = nullptr;'不完全是你正在寻找的答案。 –