【发布时间】:2021-10-10 20:49:27
【问题描述】:
我正在使用在某些函数中接受 void* 的 API。我经常不小心将错误的指针类型传递给函数,当然它编译得很好,但在运行时不起作用。
有没有办法为指向某个类的指针禁用隐式转换为void*?
【问题讨论】:
-
"有没有办法禁用隐式强制转换为
void*以获取指向某个类的指针?" - 不,没有。所有指针都可以隐式转换为void*,这是 C++ 语言的核心特性。我可能会包装有问题的 API 函数并让包装器只接受正确类型的指针,然后根据需要将它们传递给 API。 -
@SamR 这个问题是关于将
void*转换为其他指针类型。这与这个问题相反 -
这个问题是关于隐式转换。没有隐式强制转换之类的东西。强制转换是您在源代码中编写的内容,用于告诉编译器进行转换。
-
您可以做的一件事是使用您自己的函数包装 API,从而使传递无效指针成为不可能。
-
一如既往,示例代码将消除所有误解。
标签: c++ implicit-conversion void-pointers