c++ 尝试将void* 转换为nullptr是否合适?

9udxz4iz  于 2023-08-09  发布在  其他
关注(0)|答案(1)|浏览(124)

我试图保持各种void*存储,并希望其中一些是nullptr,如果没有初始化。问题是,我现在需要,如果他们是nullptr或没有。
我做了下一个程序:

#incldue <iostream>

int main() {
    void * a = nullptr;
    if (a == nullptr) {
        std::cout << "Yes" << std::endl;
    } else {
        std::cout << "No" << std::endl;
    }
}

字符串
这里会打印出“Yes”,这意味着我可以判断出void*是否是nullptr,但我不确定这是一种好方法,还是更好地使用,例如,可选。我做的事情有什么不对吗,或者有什么东西会导致这样做的错误吗?

qrjkbowd

qrjkbowd1#

如果您要确定void*是否已初始化,请使用optional<void*>。问题是,当将nullptr转换为void*时,您会丢失它是从nullptr初始化的信息,而不是其他类型的“null”指针。
也就是说,我同意通常有比void*更好的方法来实现类型擦除的评论。

相关问题