首页 > 解决方案 > C++中static_cast的理解

问题描述

我试图了解它是如何static_cast工作的。我有以下代码:

Projcet::ProjcetType result =
            static_cast<Projcet*>(DS)->removeProjcet(ID);

文档中我了解到它用于创建临时对象。如果没有 ,以下命令应该如何static_cast?我觉得它会让我更好地理解它的作用。

编辑:

忘了说:void *DS而且Projcet是一类。

标签: c++

解决方案


我猜这DS来自一些旧的 Windows 库,它返回一个void*. 可能是用 C 语言编写的。所以你得到了这个 void 指针并想把它用作Projcet参考。DS除了它是一个指针之外,您的编译器一无所知。所以它不能把它当作一个对象指针Projcet

因此,通过使用static_cast,您告诉编译器您想DS用作指向Projcet对象的指针。现在编译器可以连接到 member 之类的东西removeProjcet()

不利的一面static_cast是,如果您没有真正的指向程序的指针,Projcet则该程序最有可能崩溃。更糟糕的是,继续未定义的行为。


推荐阅读