鑑於下面的代碼段指針:鑄造指針在一個類型安全的方式
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;'不完全是你正在尋找的答案。 –